ES6 中的集合(Map、Set、WeakMap 和 WeakSet)

阅读时长 4 分钟读完

ES6 引入了四种新的集合类型:Map、Set、WeakMap 和 WeakSet。它们提供了一种更加灵活和高效的存储和管理数据的方式。本文将介绍这四种集合类型的使用方法和适用场景,并提供相应的示例代码。

Map

Map 是一种键值对的集合类型,其中每个键都唯一对应一个值。Map 可以使用任何类型的值作为键和值,包括原始类型和对象。Map 中的键和值可以通过 set 方法添加,通过 get 方法获取,也可以通过 has 方法判断是否存在。Map 还提供了 size 属性用于获取集合中键值对的数量。

示例代码

-- -------------------- ---- -------
-- ------ ---
----- ----- - --- ------

-- -----
----------------- --------
---------------- ----

-- ---
------------------------------- -- ------

-- ------
------------------------------ -- ----

-- -----------
------------------------ -- -
展开代码

Set

Set 是一种无序且唯一的集合类型,其中每个元素都唯一。Set 可以使用任何类型的值作为元素,包括原始类型和对象。Set 中的元素可以通过 add 方法添加,通过 has 方法判断是否存在,也可以通过 delete 方法删除。Set 还提供了 size 属性用于获取集合中元素的数量。

示例代码

-- -------------------- ---- -------
-- ------ ---
----- ----- - --- ------

-- ----
-------------------
--------------------
------------------- -- ------

-- ------
--------------------------------- -- ----

-- ----
----------------------

-- ----------
------------------------ -- -
展开代码

WeakMap

WeakMap 是一种键值对的集合类型,其中每个键必须是对象,而值可以是任何类型的值。与 Map 不同的是,WeakMap 中的键是弱引用的,也就是说,如果键对象被垃圾回收了,对应的键值对也会自动被删除。因此,WeakMap 主要用于存储临时数据或私有数据,以避免内存泄漏。

示例代码

-- -------------------- ---- -------
-- ------ -------
----- --------- - --- ----------

-- ---------
----- --- - ---

-- -----
------------------ ---------

-- ---
-------------------------------- -- -------

-- --------------------
--- - -----
-------------------------------- -- ---------
展开代码

WeakSet

WeakSet 是一种无序且唯一的集合类型,其中每个元素必须是对象。与 Set 不同的是,WeakSet 中的元素是弱引用的,也就是说,如果元素对象被垃圾回收了,对应的元素也会自动被删除。因此,WeakSet 主要用于存储临时数据或私有数据,以避免内存泄漏。

示例代码

-- -------------------- ---- -------
-- ------ -------
----- --------- - --- ----------

-- ----------
----- --- - ---

-- ----
-------------------

-- ------
-------------------------------- -- ----

-- --------------------
--- - -----
-------------------------------- -- -----
展开代码

总结

ES6 中的集合类型提供了一种更加灵活和高效的存储和管理数据的方式。Map 和 Set 可以用于存储任何类型的值,而 WeakMap 和 WeakSet 则主要用于存储临时数据或私有数据,以避免内存泄漏。在使用集合类型时,应根据实际需求选择合适的类型,并注意避免出现内存泄漏等问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658c0774eb4cecbf2d15c080

纠错
反馈

纠错反馈