let arr1=[{id:1, name:"Bob"},{id:2,name:"Jmu"},{id:3,name:"Timi" }]
let arr2=[{ id:1,name:"Bob"},{id:2,name:"Matis"},{id:4,name:"Com"},{id:5,name:"Coco"}]
1.差集
let result=arr2.filter(v => {
return arr1.every(i => i.id != v.id);
});
console.log(result); //[ {id: 4, name: "Com"}, {id: 5, name: "Coco"}]
let result1=arr1.filter(v => {
return arr2.every(i => i.id != v.id);
});
console.log(result1); //[ {id: 3, name: "Timi"}]
2.并集
let arr3 = arr1.concat(arr2)
let obj = [],result2=[];
result2 = arr3.reduce( (prev, cur)=> {
obj[cur.id] ? '' : obj[cur.id] = true && prev.push(cur)
return prev
}, [])
console.log(result2);//[ {id: 1, name: "Bob"},{id: 2, name: "Jmu"},{id: 3, name: "Timi"},{id: 4, name: "Com"},{id: 5, name: "Coco"}]
3.交集
let arr4 = arr1.map(item=>item.id)
let result3 = arr2.filter(v=>{
return new Set(arr4).has(v.id)
})
console.log(result3) //[{id: 1, name: "Bob"}, {id: 2, name: "Matis"}]
let arr5 = arr2.map(item=>item.id)
let result4 = arr1.filter(v=>{
return new Set(arr5).has(v.id)
})
console.log(result4) //[{id: 1, name: "Bob"},{id: 2, name: "Jmu"}]
特别注意:在使用时,注意数组先后顺序