根据相同id,合并两个数组(数组一的list添加匹配到的数组二的list)以及新数组转换成对象

这篇博客探讨了两种在JavaScript中合并两个数组对象的方法。第一种使用`map`和扩展运算符,通过创建一个新对象并合并`prelist`和`list`属性。第二种方法是利用`for`循环遍历数组,直接在原数组上进行修改,将`list`属性的内容追加到`prelist`中。这两种方法都展示了JavaScript处理数组对象的不同策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MOCK数据

let arr1 = [
    { id: 1, prelist: [{ a: 1, b: 2 }] },
    { id: 2, prelist: [{ a: 1, b: 2 }] },
    { id: 3, prelist: [{ a: 1, b: 2 }] },
  ];
  let arr2 = [
    { ids: 1, list: [{ c: 1, d: 2 }] },
    { ids: 2, list: [{ c: 1, d: 2 }] },
    { ids: 3, list: [{ c: 1, d: 2 }] },
  ];

方式一: 利用map和扩展运算符

  let lmyArr = []; 
  let lmyObj = {};//声明一个空对象
  const newArr = arr1.map((item1) => {
    arr2.map((item2) => {
      if (item1.id === item2.ids) {
        const a = item1.prelist; //要将prelist赋值给一个变量,不然语法会报错
        const b = item2.list;
        item1.lmyList = [...a, ...b];
        // 错误,语法会报错。item1.lmyList = [...item1.prelist, ...item2.list];
        lmyObj[item1.id] = [...a, ...b];
      }
    });
    return item1;
  });
  console.log('newArr', newArr);
  console.log('lmyObj', lmyObj);

方式一: 利用for循环

//合并
  function getMix(arr1: any, arr2: any) {
    for (let i = 0; i < arr2.length; i++) {
      for (let j = 0; j < arr1.length; j++) {
        if (arr2[i].ids == arr1[j].id) {
          //   arr2[i].list.push(...arr1[i].jobsheets);
          arr1[i].prelist.push(...arr2[i].list);
        }
      }
    }
    // console.log('arr2', arr2);
    // return arr2;
    console.log('arr1', arr1);
    return arr1;
  }


// 换成对象
  function transObj(arr: any) {
    const obj = {};
      arr.map((item: any) => {
        obj[item.id] = item.prelist;
      })
    console.log('obj---', obj);
    return obj;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值