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

如何对多组对象数组中的对象属性分别求和?

解决每组对象数组独立求和的问题

你的问题出在使用了全局的total变量——每次循环都会把所有组的price值累加到同一个变量里,最后自然只能得到所有组的总和。要获取每组独立的求和结果,我们需要为每个组单独维护一个累加值,最后把这些结果存储起来。

这里提供两种简单的修改方案:

方案1:使用局部累加变量+对象存储结果

// 初始化一个空对象,用来保存每个组的求和结果
const sumByGroup = {};

for (const key of Object.keys(result)) {
  // 为当前组初始化一个局部累加变量,只负责当前组的计算
  let groupTotal = 0;
  result[key].forEach(element => {
    // 注意:这里要和你对象里的属性名保持一致,示例里是price,你代码里写的是Price,要统一!
    groupTotal += element.price;
  });
  // 把当前组的结果存入对象
  sumByGroup[key] = groupTotal;
}

console.log(sumByGroup);
// 输出结果:{ obj1: 30, obj2: 10, obj3: 20 }

方案2:使用reduce简化代码

数组的reduce方法天生适合做累加计算,可以让代码更简洁:

const sumByGroup = {};

for (const key of Object.keys(result)) {
  // 用reduce直接计算当前组的总和,初始值设为0
  sumByGroup[key] = result[key].reduce((accumulator, currentItem) => {
    return accumulator + currentItem.price;
  }, 0);
}

console.log(sumByGroup);
// 输出结果同样是:{ obj1: 30, obj2: 10, obj3: 20 }

注意事项

  • 确保属性名大小写一致:你示例里的对象属性是price,但代码里写的是element.Price,如果实际对象里是小写的price,大写的写法会得到NaN,一定要统一!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:57:40