首页 > 解决方案 > 数组 groupBy 和 sum 值

问题描述

我有一个这样的数组:

let purchases = [{
    year: 2019,
    sum: 3000
  },
  {
    year: 2019,
    sum: 5500
  },
  {
    year: 2020,
    sum: 2300
  }
]              

我需要计算每一年总和的值,也就是得到下面的结果。

{"2019": 8500, "2020": 2300}

我怎样才能做到这一点?

标签: javascriptarrays

解决方案


这可以使用Array.prototype.reduce.

let purchases = [{
    year: 2019,
    sum: 3000
  },
  {
    year: 2019,
    sum: 5500
  },
  {
    year: 2020,
    sum: 2300
  }
];

const output = purchases.reduce((acc, cur) => {
  acc[cur.year] ? acc[cur.year] += cur.sum : acc[cur.year] = cur.sum;
  return acc;
}, {});
console.log(output);


推荐阅读