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

如何在JavaScript中合并键名不同、通过角色ID关联的两个对象数组

实现方案

思路说明

  • 优先推荐用Map做中间映射的方案,时间复杂度为O(n+m)(n为obj1长度,m为obj2长度),数据量大时性能优势明显
  • 小数据量场景也可以直接用Array.find实现,写法更简洁

代码实现

方案1:Map映射(推荐)

// 将obj2转换为id到name的映射表
const roleMap = new Map(this.state.obj2.map(role => [role.id, role.name]));

// 遍历obj1合并得到obj3
const obj3 = this.state.obj1.map(user => ({
  ...user,
  roleName: roleMap.get(user.roleId) || '未知角色'
}));

方案2:直接查找(适合小数据量)

const obj3 = this.state.obj1.map(user => {
  const matchedRole = this.state.obj2.find(role => role.id === user.roleId);
  return {
    ...user,
    roleName: matchedRole ? matchedRole.name : '未知角色'
  }
})

两种方案最终输出的obj3都和要求的结构完全一致,兜底的未知角色可以根据业务需要调整或者删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:24:00