添加 add

  • 集合里可以添加各种类型的元素(Set类型不行)
  • 集合添加多次的同一元素,只会存入一个
    1. let mySet = new Set()
    2. console.log(mySet);
    3. mySet.add(1)
    4. mySet.add(5)
    5. mySet.add(5)
    6. mySet.add('some text')
    7. const obj = { a: 1, b: 2 }
    8. mySet.add(obj)
    9. mySet.add({ a: 1, b: 2 })
    10. console.log(mySet);
    image.png
    上述代码中往集合里添加了两次数字5,但由于集合的元素唯一性,所以最后集合里只有一个数字5,但是上述代码中重复添加的对象{a:1, b:2}其实是两个不同的引用,它们的存储地址是不同的,所以不视为是同一个元素。

存在 has

  1. mySet.has(5) // true

删除 delete

  1. mySet.delete(5)
  2. 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);