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

如何基于ID匹配将object1的status属性合并到object2中

解决方法:匹配数组对象并添加属性

需求:根据object1的employeeId与object2的Id进行匹配,将object1中的status属性添加到对应的object2对象内。

原始数据:

var object1 = [ 
    { status: 'Complete', employeeId: 1 },
    { status: 'Updating', employeeId: 2 },
    { status: 'Finished', employeeId: 3 }
];

var object2 = [ 
    { name: 'Ben', Id: 1 },
    { name: 'Jim', Id: 2 },
    { name: 'Dan', Id: 3 }
];

方法一:遍历+查找(适用于小数据量)

直接遍历object2,对每个对象在object1中找到匹配项并合并属性:

const result = object2.map(item => {
  const matched = object1.find(obj => obj.employeeId === item.Id);
  // 合并原对象与匹配到的status,无匹配则保留原对象结构
  return { ...item, ...(matched && { status: matched.status }) };
});

console.log(result);
// 输出:
// [
//   { name: 'Ben', Id: 1, status: 'Complete' },
//   { name: 'Jim', Id: 2, status: 'Updating' },
//   { name: 'Dan', Id: 3, status: 'Finished' }
// ]

方法二:构建映射表(适用于大数据量,性能更优)

先将object1转换为以employeeId为键的映射对象,再遍历object2直接取值,避免重复查找:

// 构建status映射表
const statusMap = object1.reduce((map, obj) => {
  map[obj.employeeId] = obj.status;
  return map;
}, {});

// 给object2添加status属性
const result = object2.map(item => ({
  ...item,
  status: statusMap[item.Id]
}));

console.log(result);
// 输出同方法一

注意点

  • 若object2中存在Id在object1无匹配的情况,方法二中对应的status会是undefined,可根据需求添加默认值,比如status: statusMap[item.Id] || 'Unknown'。
  • 方法一时间复杂度为O(n*m),方法二为O(n+m),数据量越大,方法二的性能优势越显著。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:35:19