2017-06-09 31 views
0

大家好我使用javascript與陣列的工作,我有一組數據做添加數組值這裏反對我重視我的代碼幫助如何解決這個如何在JavaScript中添加數組對象值

數據

var data=[{one:1,two:2},{one:1,two:2},{one:1,two:2},{one:1,two:2}] 

預期輸出

var sumdata=[{one:4,two:8}] 

注意:一個兩米欄的名字是不是靜態

回答

1
var resObj = {}; 
for (var i = 0; i < data.length; i++) { 
    for (var item in data[i]) { 
     if (!resObj.hasOwnProperty(item)) { 
     resObj[item] = data[i][item]; 
     } else { 
     resObj[item] += data[i][item]; 
     } 
    } 
} 
var sumdata = [resObj]; 
+0

在IE @NicolòBoschi工作 – jose

+0

我覺得這是最好的答案 –

1

您可以使用對象作爲結果並迭代對象的鍵並對值進行求和。

var data = [{ one: 1, two: 2 }, { one: 1, two: 2 }, { one: 1, two: 2 }, { one: 1, two: 2 }], 
 
    result = data.reduce(function (r, o) { // iterate array 
 
     Object.keys(o).forEach(function (k) { // iterate the keys of the object 
 
      r[k] = (r[k] || 0) + o[k];  // check if a property exists or take zero 
 
     });         // and add the actual value 
 
     return r;        // return the object 
 
    }, Object.create(null));     // start with an empty object without 
 
               // some prototypes 
 
console.log(result);

+0

找你技術上修改同一個對象在這裏! –

+0

是的,它是'r',它會被修改。 –

+0

我想用{}替換Object.create(null),但那只是我:)很好的答案! –

相關問題