You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中按年份对对象数组的Count值求和?

按年份对Count值求和的JavaScript实现

嘿,这个需求完全不用手动写复杂的遍历判断,用JavaScript的内置reduce()方法就能轻松搞定!下面直接上解决方案,再一步步给你拆解:

完整代码示例

const data = [
  { "id": { "extId": "112", "year": "2000" }, "Count": 1 },
  { "id": { "extId": "113", "year": "2001" }, "Count": 446 },
  { "id": { "extId": "115", "year": "2000" }, "Count": 742 },
  // 你的其他数据项...
];

// 步骤1:用reduce按年份累加Count总和
const yearCountMap = data.reduce((accumulator, currentItem) => {
  const currentYear = currentItem.id.year;
  // 累加:如果年份不存在就初始化为0,再加上当前Count
  accumulator[currentYear] = (accumulator[currentYear] || 0) + currentItem.Count;
  return accumulator;
}, {});

// 步骤2:转换为你想要的数组格式(每个年份对应一个单独对象)
const finalResult = Object.entries(yearCountMap).map(([year, totalCount]) => ({
  [year]: totalCount
}));

console.log(finalResult);
// 输出结果:[{ '2000': 743 }, { '2001': 446 }, ...]

代码说明

  • 第一步用reduce():这是处理分组累加场景的核心方法。它会遍历数组的每一项,维护一个accumulator(累加器,这里初始是空对象)。每遍历一项,就取出年份,把对应的Count加到累加器的对应年份键上。
  • 第二步转换格式:reduce()得到的是一个{年份: 总和}的对象,如果你需要的是每个年份单独成一个对象的数组,就用Object.entries()把对象转成[年份, 总和]的二维数组,再用map()把每一组转成单独的对象。

额外小提示

如果后续操作不需要每个年份单独成对象,其实直接用yearCountMap这个键值对对象会更方便——比如你想快速获取2000年的总和,直接yearCountMap['2000']就能拿到,不用遍历数组~

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:19:22