有AB两个数组对象,如果A和B有交集则向C数组插入,如果无交集则向C插入A相同位置的空值

相关代码

arr1 = [
    {
        id: 1001,
        name: '张三'
    },
    {
        id: 1002,
        name: '李四'
    },
    {
        id: 1003,
        name: '王五'
    }
]

arr2 = [
    {
        ids: 1001,
        age: 18
    },
    {
        ids: 1003,
        age: 20
    }
]

arr3 = [])

题目描述

如果遍历比较arr2的ids和arr1的id,如果相同则向arr3添加arr2“ids”等于arr1“id”的name和age
如果不相同则向arr3与arr1相同的位置添加一个name和age等于空
阅读 1.8k
1 个回答

并集 交集 差集 都可以用Set来算

const arr1 = [
    {
        id: 1001,
        name: '张三'
    },
    {
        id: 1002,
        name: '李四'
    },
    {
        id: 1003,
        name: '王五'
    }
];
const arr2 = [
    {
        ids: 1001,
        age: 18
    },
    {
        ids: 1003,
        age: 20
    }
];
const arr3 = [];
const id_arr1 = new Set(arr1.map(o=>o.id));
const id_arr2 = new Set(arr2.map(o=>o.ids));
//id的交集
const allIds = new Set([...id_arr1].filter(x=>id_arr2.has(x)))
arr1.forEach(o=>{
    //如果有交集
    if(allIds.has(o.id)){
        arr3.push({name:o.name,age:arr2.find(o2=>o2.ids === o.id).age})
    }else{
        arr3.push({name:null,age:null})
    }
});
//大功告成,给你看看
console.log(arr3);

clipboard.png

满意吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题