Set 实现并集(Union)、交集(Intersect)和差集(Difference)

这里主要指数组间的并集,交集以及差集
数的交集,并集,差集

1 let left = new Set([1,3,4,5,6])
2 let right = new Set([3,4,5,7,])

交集:取元素公有之处
代码实现: 

let intersect = new Set([...left].filter(item => right.has(item)))

实现思路:展开数组后按照另一组数组是否包含展开数组中的元素,返回的数组作为新的Set

 

并集:取元素所有
代码实现: 

let union = new Set([...left, ...right])

实现思路:使用展开运算符实现合并

 

交集:取元素不同之处,但是要相对看待,比如left相对于right的差集
代码实现: 

let diff  = new Set([...left].filter(item => !right.has(item)))

实现思路:展开数组后按照另一组数组是否不包含展开数组中的元素,返回的数组作为新的Set

 

以上三种方法都是基于Set实现的,最终输出结果也是Set对象,如果你想要得到一个数组,有两种方法
let arr = Array.from(intersect)  或者
let otherArr = [...union]

posted @ 2020-07-14 17:07  前端怎么着你了  阅读(848)  评论(0编辑  收藏  举报