我有这样的数组。
[{
PropertyOne : 1,
PropertyTwo : 5
},
{
PropertyOne : 3,
PropertyTwo : 5
},...]
我想最终得到一个这样的数组,它聚合了这个数组的所有列,最终会像这样结束。
[{
PropertyOne : 4,
PropertyTwo : 10
}}
如果它是一个列,我知道我可以使用.reduce但是看不到我如何处理多个列?
答案 0 :(得分:9)
var array = [{
PropertyOne : 1,
PropertyTwo : 5
},
{
PropertyOne : 2,
PropertyTwo : 5
}];
var reducedArray = array.reduce(function(accumulator, item) {
// loop over each item in the array
Object.keys(item).forEach(function(key) {
// loop over each key in the array item, and add its value to the accumulator. don't forget to initialize the accumulator field if it's not
accumulator[key] = (accumulator[key] || 0) + item[key];
});
return accumulator;
}, {});
答案 1 :(得分:0)
以上使用ES6箭头功能的答案:
var reducedArray = array.reduce((accumulator, item) => {
Object.keys(item).forEach(key => {
accumulator[key] = (accumulator[key] || 0) + item[key];
});
return accumulator;
}, {});