You need to enable JavaScript to run this app. JavaScript如何将数组中相同id的多个对象合并为单个完整对象
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何将数组中相同id的多个对象合并为单个完整对象

实现方案1:使用Map做中间存储(推荐)

该方案仅需遍历一次数组,时间复杂度为O(n),性能最优,且不会修改原数组:

const tests = [
  {id: 0, vencimiento: "231216000000"},
  {id: 0, monto: "99000"},
  {id: 1, vencimiento: "230117000000"},
  {id: 1, monto: "198000"},
  {id: 2, vencimiento: "230217000000"},
  {id: 2, monto: "297000"},
];

const tempMap = new Map();
tests.forEach(item => {
  // 已存在同id对象则合并属性,不存在则直接存入
  tempMap.set(item.id, Object.assign({}, tempMap.get(item.id) || {}, item));
})
// 转换为数组得到最终结果
const resultado = Array.from(tempMap.values());

实现方案2:使用普通对象做中间存储(兼容低版本环境)

如果需要兼容不支持Map的旧运行环境,可以用普通对象替代:

const tempObj = {};
tests.forEach(item => {
  tempObj[item.id] = {...(tempObj[item.id] || {}), ...item};
})
const resultado = Object.values(tempObj);

说明

如果同一个id下出现重复属性,后遍历到的属性值会覆盖先出现的,符合常规合并逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:30:01