一、Set集合
Set类型是一种有序列表,其中包含了一些相互独立的非重复值,可以快速访问其中的数据,更有效的追踪各种离散值。
1、创建Set集合并添加元素
创建并添加相关元素的代码如下:
2、has(),delete(),clear()方法
has()方法判断Set集合是否存在某个值。
delete()方法删除Set集合中的某一个元素。
clear()方法移除集合中的所有元素。
3、Set集合的forEach()方法
代码如下:
forEach回调中如果要使用this,就需要把this传入进去,但如果使用箭头函数则无需传入,如下面的代码:
4、将Set集合转换成数组
代码如下:
5、Weak Set集合
用Set集合保存的变量和对象,即使初始对象被回收或者释放,但是Set集合中一样存在,例如下面的代码:
所以有时候,当我们把原始引用清楚的时候,也希望Set集合也会被垃圾回收机制回收掉。这个时候就可以使用Weak Set集合,当原始引用被设置成null,清除的时候,Weak Set集合就会被垃圾回收机制也回收掉。
Weak Set初始化和Set是一样,支持add(),has(),delete()方法。但是有几点要注意:
*Weak Set集合不支持传入非对象参数,会报错。
*Weak Set集合不可迭代,所以不能用for-of循环。
*Weak Set集合不暴露任何迭代器。
*Weak Set集合不支持forEach()方法。
*Weak Set集合不支持size属性。
所以当你只需要跟踪对象引用,你更应该使用Weak Set集合而不是普通的Set集合。
二、Map集合
Map是一种存储许多键值对的有序列表,其中的键名和对应的值支持所有的数据类型。所以当键名分别为5和"5"时,这是一个两个独立的键。并不会像对象一样,强制转化成字符串。
1、初始化和添加
2、支持的方法
has(key) 检测指定的键名在Map集合中是否已经存在。
delete(key) 从Map集合中移除指定键名以及其对应的值。
clear() 移除Map集合中的所有键值对。
3、Map集合的初始化方法
可以传入数组初始化,例如:
4、Map集合的forEach()方法
和Set集合的forEach方法相似,例如:
5、Weak Map集合
Weak Map集合中的键名必须是一个对象,如果使用非对象键名会报错。
Weak Map集合最大的用途就是保存Web页面中的Dom元素。一些库如果自定义一些Dom元素,则可以使用Weak Map集合来保存。
支持的方法:has(),delete(),clear()