Set,Map,WeakSet和WeakMap的区别

480 阅读2分钟

Set和Map主要的应用场景在于数据重组和数据储存
Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构。

Set

简介:

ES6新增的一种数据结构,类似于数组,该集合里面的数据是无序且唯一。是以 [value, value]的形式储存元素

实例方法:

1.add():新增

2.delete():删除

3.has():判断是否存在目标元素

4.clear():清空

例子:


5.keys():返回包含集合中所有键的迭代器

6. values():返回包含集合中所有值的迭代器

7.entries():返回包含集合中所有键值对的迭代器

8.forEach(callback,thisArg):callback用于对集合中的元素做操作。


与其他数据结构的相互转换:

1.转换成数组


Map

简介:

是以 [key, value]的形式储存元素,存储的数据也是不重复的。

实例方法:

1.set(key,value):新增

2.delete(key):删除

3.has(key):判断是否存在目标元素

4.clear():清空


注意:

在使用set和get时,只有对同一对象的引用才会将其视为同一个键,否则,就会无法获取到该键值,返回undefined。这就很好的解决了同名属性碰撞的问题,当我们扩展别人的库时,就不用担心由于属性同名造成的问题了。

5.keys():返回包含字典中所有键的迭代器

6. values():返回包含字典中所有值的迭代器

7.entries():返回包含字典中所有键值对的迭代器

8.forEach():遍历字典中的所有成员。


与其他数据结构的相互转换:

1.Map和Array相互转换


2.Map和Object相互转换



3.Map和Json相互转换


WeakSet

简介:

允许将弱引用对象存储在一个集合中,所以垃圾回收机制不考虑WeakSet对该对象的应用,如果没有其他的变量活属性应用的话,该对象会被垃圾回收掉。

实例方法:

add():新增元素

delete():删除元素

has():判断是否存在目标元素

WeakMap

简介:

WeakMap对象是一组键值对的集合,其中的键是弱引用对象,值可以是任意类型。

实例方法:

1.set(key,value):新增

2.delete(key):删除

3.has(key):判断是否存在目标元素

4.get(key):、获取key的关联对象