数组的交集和并集

简单的数组

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 } ]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容