简单的数组
let a=[1,2,3,4,5];
let b=[1,2,3,4,5,6,7,8,9];
并集
let arr = Array.from(new Set([...a, ...b]));
// [ 1, 2, 3, 4, 5, 6, 7, 8, 9]
交集
let arr = Array.from(new Set([...b].filter(x => a.has(x))));
// [ 1, 2, 3, 4, 5 ]
差集
let arr = Array.from(new Set([...b].filter(x => !a.has(x))));
//[ 6, 7, 8, 9 ]
数组对象
let a = [{ id: 1, a: 123, b: 1234 },
{ id: 2, a: 123, b: 1234 }];
let b = [{ id: 1, a: 123, b: 1234 },
{ id: 2, a: 123, b: 1234 },
{ id: 3, a: 123, b: 1234 },
{ id: 4, a: 123, b: 1234 }];
并集
let obj1 = {},//通过ID去重
markerAray = a.concat(b).reduce((cur, next) => {
obj1[next.id] ? "" : obj1[next.id] = true && cur.push(next); return cur;
}, []) //设置cur默认类型为数组,并且初始值为空的数组
//markerAray [ { id: 1, a: 456, b: 1234 }, { id: 2, a: 123, b: 1234 }, { id: 3, a: 123, b: 1234 }, { id: 4, a: 123, b: 1234 }]
交集
let arr = [...b].filter(x => [...a].some(y => y.id === x.id));
//[ { id: 1, a: 123, b: 1234 }, { id: 2, a: 123, b: 1234 } ]
差集
let arr = [...b].filter(x => [...a].every(y => y.id !== x.id));
// [ { id: 3, a: 123, b: 1234 }, { id: 4, a: 123, b: 1234 } ]
网友评论