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

Javascript如何实现对象数组中相同id对应的value值求和

实现方法

你可以通过「先统计累加、再转换格式」的逻辑实现需求,以下是两种常用的实现方案:

方案1:使用reduce+普通对象统计(写法最简洁)

const obj = [{id:1,value:2},{id:1,value:3},{id:2,value:8}];

// 统计每个id对应的value总和
const sumRecord = obj.reduce((acc, current) => {
  acc[current.id] = (acc[current.id] || 0) + current.value;
  return acc;
}, {});

// 转换为要求的数组格式
const result = Object.entries(sumRecord).map(([id, totalValue]) => ({
  id: Number(id), // 把Object.keys默认返回的字符串转为数字,保持和原id类型一致
  value: totalValue
}));

// 输出结果:[{id: 1, value: 5}, {id: 2, value: 8}]
console.log(result);

方案2:使用Map统计(支持任意类型id)

如果你的id存在非数字/字符串的特殊类型(比如Symbol、对象等),更推荐用Map实现,不需要额外做类型转换:

const obj = [{id:1,value:2},{id:1,value:3},{id:2,value:8}];
const sumMap = new Map();

// 累加统计
obj.forEach(item => {
  sumMap.set(item.id, (sumMap.get(item.id) || 0) + item.value);
});

// 直接转为目标数组
const result = Array.from(sumMap, ([id, value]) => ({id, value}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:00