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]