Set
ES6 引入了 Set
数据结构,它是一种无序且唯一的集合。与数组不同,Set
中的元素不能重复,这使得它非常适合用于去重操作。
let set = new Set()
set.add(1).add(2).add(3).add(1)
console.log(set)
在创建 set
时,可以传递一个数组 (数组会被去重) 。
let set = new Set([1, 2, 3, 1])
console.log(set)
当然,我们可以借助 Set 的特性来实现数组去重。如下:
let arr = [...new Set([1, 2, 3, 1])]
console.log(arr)
常用方法如下:
add()
添加元素,返回
Set
本身 (可链式调用) 。delete()
删除某个元素,返回
boolean
。has()
是否存在某个元素,返回
boolean
。clear()
清空所有元素,无返回值。
size()
返回元素个数。
forEach()
遍历集合,无返回值。
求交集
let arr1 = [1,2,3,5,3,2,6] let arr2 = [1,2,8,9,6,8] // let result = [...new Set(arr1)].filter(ele => [...new Set(arr2)].includes(ele)) let result = [...new Set(arr1)].filter(ele => newSet(arr2).has(ele)) console.log(result)
求并集
let arr1 = [1,2,3,5,3,2,6] let arr2 = [1,2,8,9,6,8] let result = new Set([...arr1, ...arr2]) console.log(result)
求差集
let arr1 = [1,2,3,5,3,2,6] let arr2 = [1,2,8,9,6,8] // arr1 - arr2 let result = [...new Set(arr1)].filter(e => !(new Set(arr2).has(e))) console.log(result)