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

JavaScript中依据关联字段合并两个项目详情对象数组

合并两个项目详情数组的解决方案

实现思路

  1. 先将projectDetails2转换为以a_ID为键的Map,快速定位匹配项,避免嵌套循环的性能损耗
  2. 遍历projectDetails1,每个元素通过AID在Map中查找对应项,找到则合并所有字段,未找到则保留原字段
  3. 筛选出projectDetails2中未在projectDetails1匹配到的项,加入结果数组,确保无匹配项也被完整保留

代码示例(JavaScript)

// 将projectDetails2转为以a_ID为键的Map,提升查找效率
const details2Map = new Map(projectDetails2.map(item => [item.a_ID, item]));

// 处理projectDetails1的匹配项,合并字段
const mergedFrom1 = projectDetails1.map(item => {
  const matchedItem = details2Map.get(item.AID);
  // 找到匹配项则合并,无匹配则保留原对象
  return matchedItem ? {...item, ...matchedItem} : item;
});

// 筛选projectDetails2中未匹配的项
const unmatchedFrom2 = projectDetails2.filter(item => {
  return !projectDetails1.some(detail1 => detail1.AID === item.a_ID);
});

// 合并得到最终数组
const finalProjectDetails = [...mergedFrom1, ...unmatchedFrom2];

补充说明

  • 若两个数组存在同名字段,上述代码中projectDetails2的字段会覆盖projectDetails1的字段。若需保留projectDetails1字段优先级,可调换扩展运算符顺序:{...matchedItem, ...item}
  • 该方案时间复杂度为O(n+m)(n为projectDetails1长度,m为projectDetails2长度),比嵌套循环的O(n*m)更高效,适合数据量较大的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:12:12