美文网首页
ES6中的Set和Map

ES6中的Set和Map

作者: April_hzy | 来源:发表于2018-02-06 11:20 被阅读0次

    分四部分:Set、WeakSet、Map和WeakMap。


    Set

    概念:类似于数组的数据结构,成员的值都是唯一的。本身是一个构造函数,用来生成Set数据结构。

    属性:size。

    方法:add()、delete()、has()、clear()。

    遍历操作:keys()、values()、entries()、forEach()。

    Set结构默认遍历器生成函数就是它的values方法。

    小技巧:数组去重(先将数组传入Set构造函数中,生成只有唯一值的Set结构,再用扩展运算符转为数组。也可以用Array.from()将Set结构转为数组)、


    WeakSet

    概念:与Set类似,也是不重复的值的集合。区别是:WeakSet的成员只能是对象;WeakSet中的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用。

    可以接受数组作为参数,数组的成员会自动成为WeakSet的成员。

    方法:add()、delete()、has()。


    Map

    概念:键值对的集合。与Object类似,区别是,键名不止是字符串,可以是任意类型的值。

    属性:size、set、get、has、delete、clear。

    方法:keys()、values()、entries()、forEach()。

    Map结构比较有意思的是,与其他数据结构的互相转换:

    A:Map转为数组:用扩展运算符。

    B:数组转为Map:将数组传入Map构造函数。

    C:Map转为对象:如果键名都是字符串,可以遍历Map成员,指定obj[k]=v。

    D:对象转为Map:遍历对象的每个成员,然后调用Map结构的set()方法。

    E:Map转为JSON:如果键名都是字符串,Map结构先转为Object,再序列化为对象JSON。如果键名有非字符串,将Map用扩展运算符转为数组,再序列化为数组JSON。

    F:JSON转为Map:如果所有键名都是字符串,先将JSON解析为Object,再将Object转为Map。特殊情况,数组JSON转为Map时,将JSON解析为数组,传入Map构造函数。


    WeakMap:

    概念:与Map结构类似,用于生成键值对的集合。区别是,只接受对象作为键名;WeakMap的键名所指向的对象,不计入垃圾回收机制。

    方法:get()、set()、has()、delete()。

    相关文章

      网友评论

          本文标题:ES6中的Set和Map

          本文链接:https://www.haomeiwen.com/subject/ejhnextx.html