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

如何对reduce分组后的数组属性值求和并执行数值运算

解决方案

你当前的代码是将同id的对象分组为子数组,要实现每组qty求和,只需调整reduce的逻辑,让累加器直接存储每组的总和数值而非子数组:

var array = 
  [
    {
      id: "BG",
      qty: 100
    }, 
    {
      id: "BG",
      qty: 35
    }, 
    {
      id: "JP",
      qty: 75
    },
    {
      id: "JP",
      qty: 50
    }
 ]

// 按id分组并求和qty
var result = array.reduce((sumObj, current) => {
  // 若当前id还未在累加对象中,初始值设为0,再加上当前qty
  sumObj[current.id] = (sumObj[current.id] || 0) + current.qty;
  return sumObj;
}, {});

console.log(result);
// 输出: { BG: 135, JP: 125 }

关于你提到的BG总和为35的说明

如果确实需要BG的结果为35(而非100+35的135),这更像是保留每组最后一个对象的qty值而非求和,此时逻辑可调整为:

var result = array.reduce((obj, current) => {
  // 直接用当前对象的qty覆盖之前的值
  obj[current.id] = current.qty;
  return obj;
}, {});

console.log(result);
// 输出: { BG: 35, JP: 50 }

后续数学运算示例

得到求和结果后,你可以直接对这些数值执行条件运算,比如:

// 判断JP的总和是否大于100
if (result.JP > 100) {
  console.log("JP的qty总和超过100");
}

// 计算BG和JP的总和差值
const diff = result.JP - result.BG;
console.log(`JP与BG的qty差值为: ${diff}`);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:55:20