添加 add
- 集合里可以添加各种类型的元素(Set类型不行)
- 集合添加多次的同一元素,只会存入一个
let mySet = new Set()console.log(mySet);mySet.add(1)mySet.add(5)mySet.add(5)mySet.add('some text')const obj = { a: 1, b: 2 }mySet.add(obj)mySet.add({ a: 1, b: 2 })console.log(mySet);

上述代码中往集合里添加了两次数字5,但由于集合的元素唯一性,所以最后集合里只有一个数字5,但是上述代码中重复添加的对象{a:1, b:2}其实是两个不同的引用,它们的存储地址是不同的,所以不视为是同一个元素。
存在 has
mySet.has(5) // true
删除 delete
mySet.delete(5)mySet.clear() // 全部删除
遍历
for-of 遍历
for (const item of mySet) {
console.log(item)
}
集合的key和value是同一个,就是集合元素本身
for (const item of mySet) {
console.log(item)
}
for (const item of mySet.keys()) {
console.log(item)
}
for (const item of mySet.values()) {
console.log(item)
}
for (const [key, value] of mySet.entries()) {
console.log(key, value)
}
Array和Set互转
const mySet = new Set([1, 2, 3])
const myArr1 = [...mySet]
const myArr2 = Array.from(mySet)
求交集
const set1 = new Set([1, 2, 3])
const set2 = new Set([3, 4, 5])
const intersection = new Set([...set1].filter(item => set2.has(item)))
console.log(intersection);
求差集
集合A中集合B没有的集合
const set1 = new Set([1, 2, 3])
const set2 = new Set([3, 4, 5])
const intersection = new Set([...set1].filter(item => !set2.has(item)))
console.log(intersection);
