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

Node.js中如何按指定键值合并数组内的多个JSON对象

Node.js 实现按name字段合并对象数组

你可以通过Map结构做分组聚合,遍历过程中完成属性合并,最终转换为数组得到结果,示例代码如下:

// 原始对象数组
const originArr = [
  {
    name: "abc",
    class: "12"
  },
  {
    name: "abc",
    Roll: "12"
  },
  {
    name: "def",
    class: "10"
  },
  {
    name: "def",
    Roll: "15"
  }
];

// 初始化Map存储分组数据,key为name值,value为合并后的对象
const mergeMap = new Map();
for (const item of originArr) {
  if (mergeMap.has(item.name)) {
    // 已存在对应name的条目,合并新属性
    mergeMap.set(item.name, { ...mergeMap.get(item.name), ...item });
  } else {
    // 不存在则新增条目
    mergeMap.set(item.name, { ...item });
  }
}

// 转换Map的值为数组,得到最终结果
const result = Array.from(mergeMap.values());
console.log(result);

你也可以用Array.reduce方法写为更简洁的版本:

const result = Array.from(
  originArr.reduce((acc, cur) => 
    acc.set(cur.name, { ...acc.get(cur.name) || {}, ...cur }),
  new Map()).values()
);

提示:如果相同name的对象存在同名字段,后出现的对象的字段值会覆盖先出现的,符合通用合并逻辑,若有特殊需求可自行调整合并顺序。

内容的提问来源于stack exchange,提问作者Md. Rony Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:04