• Set和Map


    Set

    ES6新的数据结构,没有重复的值

    Set加入值不会发生类型转换,5与'5'不同

    内部判断两值相等采用类似精确相等运算符===

    因此对象总是不相等,例外是NaN等于NaN

    两个方法:

    • Set.prototype.constructor 构造函数Set
    • Set.prototype.size 返回成员个数

    四个操作方法:

    • delete() 返回布尔值
    • has() 返回布尔值
    • add() 返回Set本身,可以采用链式写法
    • clear() 无返回

    四个遍历方法:

    • keys() 返回键名的遍历器
    • values() 返回键值的遍历器
    • entries() 返回键值对的遍历器
    • forEach() 调用回调函数遍历每个成员
    var set2 = new Set(['a', 'b', 3]);
    undefined
    for ( let item of set2.entries() ) {
    	console.log(item)
    }
    // ["a", "a"]
    // ["b", "b"]
    // [3, 3]
    

    Set的键名与键值相同,因此values()keys()对Set来说行为是一样的。

    Set.prototype[Symbol.iterator] === Set.prototype.values
    //true
    

    因此可以直接跳过keys或者values直接用for...of来遍历Set

    由于扩展运算符...内部使用for...of,因此也适用于Set

    数组去重
    var arr = [1,2,3,3,2,1];
    arr = [...new Set(arr)];
    arr // [1, 2, 3]
    

    WeakSet

    • 成员只能是对象
    • 对象都是弱引用
    • WeakSet是不可遍历的,也没有size属性

    作为构造函数的参数:

    ​ 可迭代对象(具有iterable接口)

    3个方法:

    has(), delete(), add()

    WeakSet的对象都是弱引用,可以用来存储DOM节点而无需担心这些节点从文档移除时会引发内存泄漏

    Map

    "值-值",键名可以是各种类型的值,而对象的键名是字符串

    数组作为构造函数的参数

    new Map([['name', 'mixukai']])
    

    Map的键是跟内存地址绑定的,只有对一个对象的引用,才将其视为同一个键。

    ​ Map的键如果是简单类型的值,若严格相等则则视为同一个键。+0-0相同,NaN也和NaN相同

    属性和方法

    size, constructor

    set()(返回Map本身), get(), delete(), clear()

    keys(), values(), entries(), forEach()

    Map转数组

    map[Symbol.iterator] === map.entries
    
    [...map.keys()]
    
    [...map.values()]
    
    [...map.entries()]与[...map]效果相同
    
    

    WeakMap

    • 键名必须是对象,null除外
    • 键名是对象的弱引用
    • 没有遍历操作,无values(),keys(),entries(),也无size
    • clear()

    四个方法:

    set(), get(), delete(), has()

  • 相关阅读:
    HDU 6370 dfs+并查集
    牛客网暑期ACM多校训练营(第六场)G
    HDU 6351暴力枚举 6354计算几何
    2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 A,D
    2018 百度之星 初赛 第六题 HDU6349
    HDU 6336 子矩阵求和
    HDU 6333 莫队+组合数
    BZOJ 2308 莫队入门经典
    Linux系统管理第一章
    2019年7月17日
  • 原文地址:https://www.cnblogs.com/guanine/p/9216979.html
Copyright © 2020-2023  润新知