Set是类似数组的一种数据结构,不同点在于Set中没有重复的值
Set对象是值的集合,你可以按照插入的顺序迭代它的元素。Set中的元素只会出现一次,即 Set 中的元素是唯一的。
另外,NaN和undefined都可以被存储在Set 中, NaN之间被视为相同的值(NaN被认为是相同的,尽管 NaN !== NaN)
创建Set对象
const s = new Set()
//可以接受一个数组作为参数
const s = new Set([1,2,3,4])
size属性
// 代表当前数据结构中包含了多少值
const s = new Set([1,2,3,4])
console.log(s.size) // 4
添加元素add
const s = new Set()
s.add(1) // 添加元素
s.add(2)
s.add(2)
console.log(s.size) // 2
console.log(s) // {1,2}
移除元素delete
const s = new Set()
s.add(1)
s.add(2)
s.delete(2) // 删除元素
console.log(s) // {1}
判断是否含有指定元素has()
const s = new Set()
s.add(1)
s.add(2)
console.log(s.has(2)) // true
s.delete(2)
console.log(s.has(2)) // false
清除所有成员clear()
// 清除set结构中的所有值,没有返回值
s.clear()
keys() values()
// set中的键值和键名相同
const s = new Set([1,2,3,4,5])
for(let key of s.keys()){
console.log(key) // 1 2 3 4 5
}
for(let value of s.values()){
console.log(value) // 1 2 3 4 5
}
遍历 for of
for(let item of set){
console.log(item)
}
forEach
const s = new Set(['a','b','c'])
s.forEach(value=>{
console.log(value)
})
并集,交集,差集
let a = new Set([1,2,3])
let b = new Set([4,3,2])
// 并集
let union = new Set([...a,...b])
console.log(union) // {1,2,3,4}
// 交集
let intersect = new Set([...a].filter(x=>b.has(x)))
console.log(intersect); // {2,3}
// 差集
let diff = new Set([...a].filter(x=>!b.has(x)))
console.log(diff); // {1}
练习 数组去重
const items = new Set([1,2,2,3,4,5])
const arr = Array.from(items)
console.log(arr)
const s = new Set([1,2,1,3,4,5])
console.log(s) // {1,2,3,4,5}
console.log([...s]) // [1,2,3,4,5]