如何合并同名对象并累加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
相关产品推荐
相关产品推荐

