JS如何在包含多个数值的数组上使用reduce

时间:2016-10-24 18:15:50

标签: javascript angularjs

我有这样的数组。

[{
    PropertyOne : 1,
    PropertyTwo : 5
},
{
    PropertyOne : 3,
    PropertyTwo : 5
},...]

我想最终得到一个这样的数组,它聚合了这个数组的所有列,最终会像这样结束。

[{
    PropertyOne : 4,
    PropertyTwo : 10
}}

如果它是一个列,我知道我可以使用.reduce但是看不到我如何处理多个列?

2 个答案:

答案 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;
    }, {});