两个数组取差集和交集

1,145 阅读1分钟

差集

let arr = [1, 2, 3, 4];
let arr1 = [2, 3, 4, 5, 6];
arr.filter(a => arr1.every(a1 => a != a1)); //[1]
or
arr.filter(a => !arr1.includes(a))

数组对象

const arr2 = [  { id: 1, code: 1 },  { id: 2, code: 3 },  { id: 3, code: 5 },  { id: 4, code: 6 },];const arr3 = [  { id: 1, code: 1, name: 'a' },  { id: 2, code: 3, name: 'b' },  { id: 3, code: 3, name: 'c' },  { id: 4, code: 3, name: 'd' }];arr2.filter(a2 => arr3.every(a3 => a2.code !== a3.code));
 // [{id: 1,code: 1},{id: 2,code: 3}];

交集

let arr = [1, 2, 3, 4];
let arr1 = [2, 3, 4, 5, 6];
arr.filter(a => arr1.some(a1 => a === a1)); // [2,3,4]
or
arr.filter(a => arr1.includes(a))

数组对象

const arr2 = [  { id: 1, code: 1 },  { id: 2, code: 3 },  { id: 3, code: 5 },  { id: 4, code: 6 },];
const arr3 = [  { id: 1, code: 1, name: 'a' },  { id: 2, code: 3, name: 'b' },  { id: 3, code: 3, name: 'c' },  { id: 4, code: 3, name: 'd' }];
arr2.filter(a2 => arr3.some(a3 => a2.code === a3.code))
// [{id: 1,code: 1},{id: 2,code: 3}];