【两组二维数组循环比对替换key值相同的值】

两组二维数组循环比对替换key值相同的值

需求

二维嵌套数组,将数组a[{id:‘1’,names:[{nid:‘a1’,a:'‘亿‘,b:‘二’},{nid:‘a2’,a:’‘亿2‘,b:‘二2’}]},{id:‘2’,names:[{nid:‘a11’,a:’‘亿‘,b:‘二’},{nid:‘a22’,a:’‘亿23‘,b:‘二3’}]}],比对数组ba[{id:‘1’,names:[{nid:‘a1’,a:’‘1亿‘,b:‘二’,c:“ss”},{id:‘2’,names:[{nid:‘a2’,a:’'1亿1‘,b:‘二’,c:“ss”}]}]后将ba数组中的names中的a和c值赋值给a数组中names[]中nid相同的值

分析

在这个情况下,我们需要根据 id 和 nid 来匹配 a 数组和 ba 数组中的 names 对象。下面是具体的实现步骤:

遍历 ba 数组。
对于每个元素,查找 a 数组中具有相同 id 的元素。
如果找到,则根据 nid 匹配 names 对象,并更新相应的 a 和 c 属性。

示例代码

// 原始数组 a
const a = [
  { id: '1', names: [{ nid: 'a1', a: '亿', b: '二' }, { nid: 'a2', a: '亿2', b: '二2' }] },
  { id: '2', names: [{ nid: 'a11', a: '亿', b: '二' }, { nid: 'a22', a: '亿23', b: '二3' }] },
];

// 数组 ba,用于与 a 数组进行比较
const ba = [
  { id: '1', names: [{ nid: 'a1', a: '1亿', b: '二', c: "ss" }] },
  { id: '2', names: [{ nid: 'a22', a: '1亿1', b: '二', c: "ss" }] },
];

function updateValues(a, ba) {
  // 遍历 ba 数组
  ba.forEach(itemBa => {
    // 查找 a 数组中 id 相同的项
    const itemA = a.find(itemA => itemA.id === itemBa.id);

    if (itemA) {
      // 更新 names 数组中的值
      itemBa.names.forEach(nameObjBa => {
        // 查找具有相同 nid 的 names 对象
        const nameObj = itemA.names.find(nameObj => nameObj.nid === nameObjBa.nid);
        
        if (nameObj) {
          nameObj.a = nameObjBa.a;
          nameObj.c = nameObjBa.c; // 添加新属性 c
        }
      });
    }
  });

  return a;
}

// 调用函数更新 a 数组
const updatedA = updateValues(a, ba);
console.log(updatedA);

输出结果

执行上述代码后,a 数组将会被更新为:

[
  { id: '1', names: [{ nid: 'a1', a: '1亿', b: '二', c: 'ss' }, { nid: 'a2', a: '亿2', b: '二2' }] },
  { id: '2', names: [{ nid: 'a11', a: '亿', b: '二' }, { nid: 'a22', a: '1亿1', b: '二', c: 'ss' }] },
]

注意事项

  • 这个示例假设 ba 数组中的每个 id 下的 names 数组可能包含一个或多个对象。如果 ba 数组中的 names
    数组有多个对象,那么需要相应地调整逻辑以确保正确匹配。
  • 如果 a 数组中的 names 数组长度不一致,可能需要额外处理这种情况。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值