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

如何遍历对象数组,按title合并并求和对应属性?

解决方案:分组累加同title的对象属性

嘿,这个需求太常见啦!用一个映射对象来做分组累加就完全能解决,不管同title的对象有5个、10个还是15个都不在话下,而且全程用属性名访问,完美符合你的要求。

核心思路

  1. 先创建一个临时的映射对象(比如sumMap),用每个对象的title作为键,存储对应属性的累加结果。
  2. 遍历原始数组里的每一个对象:
    • 如果当前title还没在映射里,就把这个对象的属性值初始化进去;
    • 如果已经存在,就把对应属性的值逐个累加。
  3. 最后把映射对象转成你需要的输出格式(数组或者字符串都可以)。

代码示例(JavaScript)

首先注意下你的示例数组里的语法小问题:对象键值对应该用:而不是=,我先修正了这个,然后上代码:

// 你的原始数组(修正语法后)
const data = [
  { "title": "Test", "prop1": 4, "prop2": 6 },
  { "title": "Test2", "prop1": 5, "prop2": 7 },
  { "title": "Test", "prop1": 6, "prop2": 14 }
];

// 初始化映射对象,用来存每个title的累加结果
const sumMap = {};

// 遍历数组,处理每个对象
data.forEach(item => {
  // 用属性名访问title,符合你的要求
  const currentTitle = item['title'];
  
  // 如果这个title还没被记录,初始化
  if (!sumMap[currentTitle]) {
    sumMap[currentTitle] = {
      title: currentTitle,
      prop1: item['prop1'],
      prop2: item['prop2']
    };
  } else {
    // 已经存在,累加对应属性
    sumMap[currentTitle]['prop1'] += item['prop1'];
    sumMap[currentTitle]['prop2'] += item['prop2'];
  }
});

// 转成你要的数组格式
const resultArray = Object.values(sumMap);
console.log(resultArray);
// 输出: [ { title: 'Test', prop1: 10, prop2: 20 }, { title: 'Test2', prop1: 5, prop2: 7 } ]

// 转成你需要的字符串格式
const resultString = resultArray.map(item => `${item.title}, ${item.prop1}, ${item.prop2}`).join(';');
console.log(resultString);
// 输出: "Test, 10, 20;Test2, 5, 7"

进阶:通用版(支持任意属性)

如果以后你的对象会新增更多属性(比如prop3、prop4),可以用下面的通用写法,不用每次改代码:

data.forEach(item => {
  const currentTitle = item['title'];
  if (!sumMap[currentTitle]) {
    // 浅拷贝当前对象,保留所有属性
    sumMap[currentTitle] = {...item};
  } else {
    // 遍历所有属性,只累加数字类型的属性(排除title)
    Object.keys(item).forEach(key => {
      if (key !== 'title' && typeof item[key] === 'number') {
        sumMap[currentTitle][key] += item[key];
      }
    });
  }
});

这个版本会自动处理所有数字类型的属性,不管你加多少个都能正确累加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:48:04