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

如何高效对大型对象数组中各键对应的值求和?

如何高效对大型对象数组中各键对应的值求和?

看起来你现在的方法在处理大数据集时有点吃力,这很正常——因为你目前的思路是对每个要统计的键都完整遍历一遍整个数组,相当于做了很多重复的遍历工作,数据量一大就会变慢。

其实我们只需要遍历一次整个数据集,在遍历过程中直接累加每个键的值就可以了,这样效率会高很多,时间复杂度从原来的O(K*N)降到O(N)(K是键的数量,N是数组长度)。

优化后的代码

// 初始化一个空对象用来存储各键的总和
const totalSum = {};

// 只遍历一次数据数组
for (const item of data) {
  // 遍历当前对象的所有键值对
  for (const [key, value] of Object.entries(item)) {
    // 累加值:如果键已存在就加当前值,不存在则初始化为0再加当前值
    totalSum[key] = (totalSum[key] || 0) + value;
  }
}

console.log(totalSum);

代码逻辑说明

  • 先创建空对象totalSum,用来最终存储每个键的累加结果。
  • 用for...of遍历整个data数组,每个循环处理一个对象item。
  • 通过Object.entries(item)把当前对象转换成键值对数组,再逐个处理这些键值对。
  • 对每个键key,判断它是否已经在totalSum中:存在就直接累加当前值,不存在则用0作为初始值再加上当前值,完成初始化。

这种方法只需要遍历一次数组,每个对象的键值对也只处理一次,在大数据集下的运行效率会比你原来的方法提升非常明显,你可以用自己生成的大型测试数据对比测试一下。

备注:内容来源于stack exchange,提问作者AndreasM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 12:09:35