ES6 中的 Set 和 WeakSet 使用详解

阅读时长 4 分钟读完

在 ES6 中,新增了两个集合类:Set 和 WeakSet,它们提供了一种存储无序的、唯一的值的方式。它们与数组的区别在于,数组中的值可以重复,而集合中的值必须唯一。

Set

Set 可以用来存储任何类型的唯一值,它为存储、查询、删除元素提供了高效的方法。

声明和基本使用

声明一个 Set:

添加元素:

删除元素:

查询元素:

获取集合中元素的数量:

遍历集合:

Set 的应用

Set 主要用来去重或者判断元素是否存在。

Set 和数组的转换

由于 Set 和数组之间的转换比较常见,因此 ES6 提供了两个方法:Array.fromArray.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

纠错
反馈