Set 📌Map

Set

  • 类似于数组,是值的集合,且其成员值是唯一的,没有重复的值,
  • NaN和undefined都可以被存储在Set中,且NaN被视为相同的值,尽管NaN !== NaN
    1. let s = new Set()
    2. s.add(1)
    3. s.add('lonzo')
    4. s.add(true)
    5. s.add(NaN)
    6. s.add(undefined)

    与Array相关的操作

    ```javascript // Array转Set let arr = [1, 4, 5, ‘hello’, true] let s = new Set(arr)

// Set转Array let arr2 = […s]

// 数组去重 let numArr = [1,4,5,6,2,1,5,4] let _numArr = […new Set(numArr)] // [1, 4, 5, 6, 2] ```

Map

类似于对象,也是键值对的集合,但是键值可以是任何类型,不像Object局限于String(或Symbol)

Map与Object的比较

Map Object
意外的键 默认情况下不包含任何键,只包含显示插入的键 自身键名可能与其原型链上的键名冲突
键的类型 任意值 String或者Symbol
键的顺序 有序的,迭代时按照插入的顺序返回键值 无序的
键值对的个数 可以通过size属性获取 只能通过手动计算
迭代 可以直接被迭代 需先获取它的键然后才能迭代