Set集合
1. 基本用法
// 声明一个 set
let s = new Set()
let s2 = new Set(['大事儿', '小事儿', '好事儿', '坏事儿', '小事儿'])
console.log(s2) // object类型,会自动去重
console.log(JSON.stringify(s2)) // {}
console.log(JSON.stringify([...s2])) // ["大事儿","小事儿","好事儿","坏事儿"]
// 元素个数
console.log(s2.size) // 4
// 内部实现了迭代器
for (const iterator of s2) {
console.log(iterator)
}
// 添加新元素
s2.add('喜事儿')
// 删除元素
s2.delete('坏事儿')
// 检测
s2.clear()
// 清空
s2.clear()
2. 实践
let arr = [1,2,4,3,5,2,4,3,7,2,1,8]
// 1. 数组去重
let arr1 = [...new Set(arr)].sort((a, b) => a - b)
console.log(arr1)
// 交集
let arr2 = [4, 5, 6, 9, 8]
let result = arr1.filter(item => new Set(arr2).has(item))
console.log(result) // [4, 5, 8]
// 并集
let union = [...new Set([...arr1, ...arr2])].sort((a, b) => a - b)
console.log(union) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 差集
let result2 = arr1.filter(item => !(new Set(arr2).has(item)))
console.log(result2) // [1, 2, 3, 7]