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

如何合并两个JavaScript数组生成含子数组的目标对象数组

解决方案

你可以通过分组+合并的方式实现需求,具体代码如下:

const array1 = [
  {master:'1',total:123,price:34},
  {master:'1',total:323,price:45},
  {master:'2',total:555,price:22}
];

const array2 = [
  {master:'1',quantity:10},
  {master:'2',quantity:20},
  {master:'3',quantity:30}
];

// 1. 按master字段分组array1,存储对应的子项集合
const masterChildMap = new Map();
array1.forEach(item => {
  const { master, total, price } = item;
  // 若当前master未在Map中,初始化空数组
  if (!masterChildMap.has(master)) {
    masterChildMap.set(master, []);
  }
  // 将当前项的total和price存入对应分组
  masterChildMap.get(master).push({ total, price });
});

// 2. 遍历array2,合并对应的子项数组
const result = array2.map(item => {
  const mergedObj = { ...item };
  // 如果当前master存在对应的子项,添加child属性
  if (masterChildMap.has(item.master)) {
    mergedObj.child = masterChildMap.get(item.master);
  }
  return mergedObj;
});

console.log(result);

代码说明

  • 第一步用Map对array1做分组,把每个master对应的total和price整理成数组,后续查找子项的效率更高。
  • 第二步遍历array2的每个元素,先复制原对象的属性,再检查当前master是否有对应的子项集合,如果有就添加child属性,最终得到目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:17:09