分四部分: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()。
网友评论