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

JavaScript中按键去重数组对象并累加对应值的实现

解决JavaScript对象数组合并相同键并累加值的问题

问题描述

现有如下JavaScript对象数组:

const array = [
  { 10205: 2 },
  { 10207: 3 },
  { 10205: 2 },
  { 10207: 1 }
];

需要将其转换为:

[
  { 10205: 4 },
  { 10207: 4 }
]

即合并所有键相同的对象,将对应的值累加,最终得到每个唯一键对应一个对象的数组。

解决方案

可以通过临时对象统计累加值再转换为目标格式的方式实现,代码如下:

const array = [
  { 10205: 2 },
  { 10207: 3 },
  { 10205: 2 },
  { 10207: 1 }
];

// 1. 用reduce统计每个键的累加总和
const sumMap = array.reduce((acc, currentObj) => {
  // 获取当前对象的唯一键
  const key = Object.keys(currentObj)[0];
  // 累加值:如果键已存在则加当前值,否则从0开始加
  acc[key] = (acc[key] || 0) + currentObj[key];
  return acc;
}, {});

// 2. 将统计结果转换为目标数组格式
const mergedArray = Object.entries(sumMap).map(([key, value]) => ({ [key]: value }));

console.log(mergedArray);

代码逻辑说明

  1. reduce统计阶段:遍历原数组,每次取出单个对象的键,把对应的值累加到临时对象sumMap中,最终sumMap会存储每个键的总累加值(比如{ 10205: 4, 10207: 4 })。
  2. 转换为目标数组:用Object.entries把sumMap拆分成键值对数组,再通过map把每个键值对转换成独立的对象,得到最终的合并数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:30:52