在 ES6 中,新增了两个集合类:Set 和 WeakSet,它们提供了一种存储无序的、唯一的值的方式。它们与数组的区别在于,数组中的值可以重复,而集合中的值必须唯一。
Set
Set 可以用来存储任何类型的唯一值,它为存储、查询、删除元素提供了高效的方法。
声明和基本使用
声明一个 Set:
----- ----- - --- ------
添加元素:
------------- ------------- -------------
删除元素:
----------------
查询元素:
------------- -- ---- ------------- -- -----
获取集合中元素的数量:
----------- -- -
遍历集合:
------------------ -- -------------------
Set 的应用
Set 主要用来去重或者判断元素是否存在。
----- --- - --- -- -- -- -- -- -- --- ----- --- - --- --------- ----- --------- - --------- -- --- -- -- -- -- ----- ---------- - ----------- -- ----
Set 和数组的转换
由于 Set 和数组之间的转换比较常见,因此 ES6 提供了两个方法:Array.from
和 Array.prototype.slice.call
。
将 Set 转换为数组:
----- ----- - --- ------- -- ---- ----- ------- - ------------------ -- --- -- --
将数组转换为 Set:
----- ------- - --- -- --- ----- ----- - --- ------------- -- -- -- -
WeakSet
WeakSet 与 Set 类似,但它只能存储对象类型的值,而且这些对象都是弱引用,即在没有其它引用时会被垃圾回收器自动回收。
声明和基本使用
声明一个 WeakSet:
----- --------- - --- ----------
添加元素:
----- ---- - - -- - -- ----- ---- - - -- - -- -------------------- --------------------
删除元素:
-----------------------
查询元素:
由于 WeakSet 中的元素都是弱引用,因此不能使用 has
方法查询元素是否存在。
WeakSet 的应用
WeakSet 主要用来存储一些临时对象,这些对象只有在其它地方还有引用时才需要存在。
----- ----- - --- ---------- -------- ------------------ - -- ---------------- - ------ ----- - ---- - --------------- ------ ------ - -
总结
在实际项目中,我们经常会遇到需要存储一些唯一的值或者临时对象的需求。Set 和 WeakSet 为这类需求提供了高效、便捷的解决方案。
- Set 用于存储任意类型的唯一值,可以高效地进行存储、查询、删除等操作;
- WeakSet 用于存储一些临时对象,常用于检查对象是否存在,全局缓存等场景。
在使用 Set 和 WeakSet 时需要注意:
- 在 Set 中,值是唯一的,但对象的引用会影响到唯一性;
- 在 WeakSet 中,对象是弱引用,只要该对象在其它地方没有引用,就会被垃圾回收器自动回收。
因此需要根据具体需求选择合适的集合类型。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64c5e08895c405902ee3b94a