有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

满意吗

推荐问题