2016-12-21 41 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) 

我有我的一系列主題通過這個。

如何去

1-發現所有相應的RESP的

2-總結他們

3-接下來將它們存儲到對象?

+0

你沒有一個'arrayList'(他們沒有在JavaScript中存在的),那簡直是一堆不相關的對象文本的。 –

+0

aaah我明白了!謝謝。 – user3213081

+0

你能告訴我如何構建第二個包含數字的數組嗎? – 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 
}