0%

WeakMap && WeakSet

set

类似数组,但成员值都是唯一的,不能重复

  1. 创建 new Set()

    1
    2
    3
    4
    const s = new Set()
    const s1 = new Set([1, 2, 3, 3, 4]) // 可接受数组,可用于去重

    for (let i of s) {}
  2. 添加 add(val)

  3. delete(val)

  4. has(val) // return boolean

  5. size // num

  6. clear() // 清空,没有返回值

  7. 遍历 set.keys() | set.values() | forEach | map | filter

  8. 并集交集和差集

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    let a = new Set([1, 2, 3]);
    let b = new Set([4, 3, 2]);

    // 并集
    let union = new Set([...a, ...b]);
    // Set {1, 2, 3, 4}

    // 交集
    let intersect = new Set([...a].filter(x => b.has(x)));
    // set {2, 3}

    // 差集
    let difference = new Set([...a].filter(x => !b.has(x)));
    // Set {1}

    weakSet

    WeakSet 的成员只能是对象,而不能是其他类型的值。
    WeakSet 中的对象都是弱引用,垃圾回收不会考虑,当外部没有引用时,会自动消失
    WeakSet 不能遍历

  9. add | delete | has

map

哈希结构,Object 提供 "字符串: 值" ,Map 提供 "值: 值"

  1. get | set | delete | has

    1
    2
    3
    4
    5
    6
    7
    8
    9
    const m = new Map();
    const o = {p: 'Hello World'};

    m.set(o, 'content')
    m.get(o) // "content"

    m.has(o) // true
    m.delete(o) // true
    m.has(o) // false
  2. 与其他数据结构的转换

  • map 转数组: ...扩展运算符
  • 数组转 map: 传入 map 构造函数(new Map(array))

weakMap

WeakMap 只接受对象作为键名
WeakMap 的键名所指向的对象,不计入垃圾回收机制

  1. get()、set()、has()、delete()
-------------本文结束感谢您的阅读-------------