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

如何按supplierName对数组的awardedCapacity求和并生成独立结果数组

实现思路

通过一次遍历完成同供应商配额的累加统计,再将统计结果转换为目标格式数组,时间复杂度为O(n),仅需遍历原数组一次。

完整代码

const bidsList = [
  { supplierName:'A', awardedCapacity:5 },
  { supplierName:'B', awardedCapacity:10 },
  { supplierName:'A', awardedCapacity:5 },
  { supplierName:'A', awardedCapacity:3 },
  { supplierName:'B', awardedCapacity:5 },
  { supplierName:'C', awardedCapacity:2 }
];

// 统计每个供应商的总配额
const countMap = bidsList.reduce((prev, curr) => {
  const name = curr.supplierName
  prev[name] = (prev[name] || 0) + curr.awardedCapacity
  return prev
}, {})

// 转换为目标格式数组
const newArr = Object.entries(countMap).map(([supplierName, totalAwarded]) => ({
  supplierName,
  totalAwarded
}))

输出结果

[
  { supplierName: 'A', totalAwarded: 13 },
  { supplierName: 'B', totalAwarded: 15 },
  { supplierName: 'C', totalAwarded: 2 }
]

补充说明

如果需要严格保留原数组中供应商首次出现的顺序,可以用Map代替普通对象作为统计容器,代码调整如下:

const countMap = bidsList.reduce((map, curr) => {
  const name = curr.supplierName
  map.set(name, (map.get(name) || 0) + curr.awardedCapacity
  return map
}, new Map())

const newArr = Array.from(countMap, ([supplierName, totalAwarded]) => ({
  supplierName,
  totalAwarded
}))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:15:04