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

如何合并同名对象并累加value1与value2的值(JavaScript)

解决方案

你可以用 Array.reduce() 结合 Object.values() 实现需求,核心是通过name作为唯一标识分组累加数值:

const arrayData = [
{name: 'John', car:'BMW',  value1: 500, value2: 350},
{name: 'Paul', car: 'AUDI',  value1: 290, value2: 200},
{name: 'John', car:'BMW',  value1: 600, value2: 360},
{name: 'John', car:'BMW',  value1: 500, value2: 350},
{name: 'Paul', car: 'AUDI',  value1: 120, value2: 50},
{name: 'John', car:'BMW',  value1: 100, value2: 100},
];

const mergedData = Object.values(arrayData.reduce((acc, curr) => {
  const key = curr.name;
  if (!acc[key]) {
    // 首次遇到该name,初始化分组对象
    acc[key] = {
      name: curr.name,
      car: curr.car,
      value1: curr.value1,
      value2: curr.value2
    };
  } else {
    // 已存在分组,累加对应数值
    acc[key].value1 += curr.value1;
    acc[key].value2 += curr.value2;
  }
  return acc;
}, {}));

console.log(mergedData);

代码说明

  • reduce 遍历原数组,用对象acc做累加器,以name为键存储分组数据
  • 首次遇到某个name时,创建新的分组条目,复制name、car并初始化数值
  • 再次遇到相同name时,直接累加value1和value2
  • 最后用Object.values()将累加器中的分组值提取为数组,得到目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:20:55