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

如何用JavaScript将对象数组与按唯一ID为键的对象合并为目标数组

ES6 合并实现方案

因为你的obj已经提前用ItemID作为键做了索引,直接遍历数组做合并即可,时间复杂度为O(n),性能最优:

const mergedArr = arr1.map(item => ({
  ...item,
  ...obj[item.ItemID]
}))

兼容无匹配项的版本

如果存在部分arr1的ItemID在obj中找不到对应值的场景,避免合并undefined属性可以加兜底逻辑:

const mergedArr = arr1.map(item => ({
  ...item,
  ...(obj[item.ItemID] ?? {})
}))

注:空值合并运算符??为ES2020特性,若运行环境不支持可替换为||。||会将0、false等falsy值判定为无效,??仅对null/undefined生效,可根据业务场景选择。

运行结果

代入你提供的示例代码后,输出结果如下:

[
  { ItemID: '164488786031', name: 'google', promotion_id: 7, name2: 'google-mt' },
  { ItemID: '164488786030', name: 'facebook', promotion_id: 9, name2: 'facebook-mt' }
]

逻辑说明

  • 用map遍历原数组arr1生成新数组,不会修改原始数据
  • 用对象扩展运算符...合并两个对象的属性:如果存在同名属性,写在后面的对象属性会覆盖前面的。如果需要arr1的属性优先级高于obj,保持现有顺序即可;如果需要obj属性不被覆盖,调换两个扩展语句的顺序即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 15:54:10