2016-12-21 3 views
1

次のように私は、オブジェクトのセットを持っている:集計プロパティ値

{"id":136073,"date":"2016-12-13 16:06:55","user":"test1","expt":"ex3","subj":"1481645153775","cond":"Male,Yes","stim":"Peace","resp":0} 
{"id":136075,"date":"2016-12-13 16:07:04","user":"test1","expt":"ex3","subj":"1481645035859","cond":"Male,Yes","stim":"Marriage","resp":0} 
{"id":136077,"date":"2016-12-13 16:09:55","user":"test1","expt":"ex3","subj":"1481645377779","cond":"Male,Yes","stim":"Alone","resp":0} 
{"id":136079,"date":"2016-12-13 16:11:41","user":"test1","expt":"ex3","subj":"1481645377779","cond":"Male,Yes","stim":"Peace","resp":0} 
{"id":136145,"date":"2016-12-13 18:49:22","user":"test1","expt":"ex3","subj":"1481654705832","cond":"Male,No","stim":"Alone","resp":-2} 
{"id":136147,"date":"2016-12-13 18:49:36","user":"test1","expt":"ex3","subj":"1481654705832","cond":"Male,No","stim":"Peace","resp":0} 
{"id":136771,"date":"2016-12-13 22:19:01","user":"test1","expt":"ex3","subj":"1481667464470","cond":"Male,Yes","stim":"Alone","resp":2} 

私はresultsという配列にグループにそれらをしたいと思います。

同じsubjプロパティ値を持つオブジェクトのrespプロパティの値を集計したいとします。

私がこれまで行ってきたことは、検索する対象の一意なリストを作成することであり、それらの合計を隣に保存したいのです。

for (var i=0;i<results.length;i++) { 

    // console.log(JSON.stringify(results[i].subj)) 

    if (i>0 && test.includes(results[i].subj)){ 

    } else { 
    var total = test.push(results[i].subj) 
    // var total2 = test.push(results.resp) 
    // console.log(JSON.stringify(test)) 
    } 
} 

console.log(test) 

私はこれを通して、私の配列を持っています。

どのように私は次の対象にそれらを保存する彼らに

3-合計するすべての対応RESPの

2-見つけることについて

1-行くのですか?

+0

あなたは、それは単に無関係なオブジェクトリテラルの束だ、 'arrayList'を(彼らはJavaScriptで存在しない)がありません。 –

+0

aaah私は見る!ありがとうございました。 – user3213081

+0

合計を保持する2番目の配列をどのように構築できるかアドバイスできますか? – user3213081

答えて

0

を印刷します。

var results = [{ id: 136073, date: "2016-12-13 16:06:55", user: "test1", expt: "ex3", subj: "1481645153775", cond: "Male,Yes", stim: "Peace", resp: 0 }, { id: 136075, date: "2016-12-13 16:07:04", user: "test1", expt: "ex3", subj: "1481645035859", cond: "Male,Yes", stim: "Marriage", resp: 0 }, { id: 136077, date: "2016-12-13 16:09:55", user: "test1", expt: "ex3", subj: "1481645377779", cond: "Male,Yes", stim: "Alone", resp: 0 }, { id: 136079, date: "2016-12-13 16:11:41", user: "test1", expt: "ex3", subj: "1481645377779", cond: "Male,Yes", stim: "Peace", resp: 0 }, { id: 136145, date: "2016-12-13 18:49:22", user: "test1", expt: "ex3", subj: "1481654705832", cond: "Male,No", stim: "Alone", resp: -2 }, { id: 136147, date: "2016-12-13 18:49:36", user: "test1", expt: "ex3", subj: "1481654705832", cond: "Male,No", stim: "Peace", resp: 0 }, { id: 136771, date: "2016-12-13 22:19:01", user: "test1", expt: "ex3", subj: "1481667464470", cond: "Male,Yes", stim: "Alone", resp: 2 }], 
 
    grouped = []; 
 

 
results.forEach(function (a) { 
 
    if (!this[a.subj]) { 
 
     this[a.subj] = { subj: a.subj, resp: 0 }; 
 
     grouped.push(this[a.subj]); 
 
    } 
 
    this[a.subj].resp += a.resp; 
 
}, Object.create(null)); 
 

 
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

ありがとうございました。 – user3213081

0

結果のために{}を作成します。ここで、キーはサブジェクト名であり、値は合計です。それからあなたのリストを列挙し、それらを合計してください。新しいキーの大文字小文字をキャッチするには、(res[each['subj']] || 0)を使用します。

var res = {}; 
list.forEach(function(each) { 
    res[each['subj']] = (res[each['subj']] || 0) + each['resp']; 
}); 
console.log(res); 

これは、あなたが結果をグループ化するためのハッシュテーブルを使用することができ

{ 
    "1481645153775": 0, 
    "1481645035859": 0, 
    "1481645377779": 0, 
    "1481654705832": -2, 
    "1481667464470": 2 
}