在 JavaScript 中,我们经常需要使用键值对的数据结构。在 ES6 中,有两种新的数据结构 Map 和 WeakMap 可以帮助我们更方便地处理键值对。
Map
Map 是一种集合,它可以存储任意类型的键和值,并且提供了一些方便的方法来操作这些键值对。
创建 Map
我们可以使用 Map 构造函数来创建一个空的 Map:
----- ----- - --- ------
我们也可以在创建时传入一个数组,这个数组中每个元素都是一个键值对:
----- ----- - --- ----- -------- ---------- -------- --------- ---
添加和获取键值对
我们可以使用 set 方法来添加键值对:
----------------- ----------
我们可以使用 get 方法来获取键对应的值:
------------------ -- --------
删除键值对
我们可以使用 delete 方法来删除键值对:
---------------------
遍历 Map
我们可以使用 for...of 循环来遍历 Map 中的键值对:
--- ------ ----- ------ -- ------ - ------------------- - ----------- -
我们也可以使用 forEach 方法来遍历 Map 中的键值对:
--------------------- ---- -- - ------------------- - ----------- ---
Map 的长度
我们可以使用 size 属性来获取 Map 中键值对的数量:
----------- -- -
WeakMap
WeakMap 也是一种集合,它可以存储任意类型的键和值,但是它的键必须是对象。与 Map 不同的是,WeakMap 的键是弱引用的,这意味着如果键对象没有被引用,它们将被自动垃圾回收。
创建 WeakMap
我们可以使用 WeakMap 构造函数来创建一个空的 WeakMap:
----- --------- - --- ----------
添加和获取键值对
我们可以使用 set 方法来添加键值对:
----- --- - --- ------------------ ---------
我们可以使用 get 方法来获取键对应的值:
------------------- -- -------
删除键值对
我们可以使用 delete 方法来删除键值对:
----------------------
WeakMap 的长度
由于 WeakMap 的键是弱引用的,我们不能像 Map 一样使用 size 属性来获取 WeakMap 中键值对的数量。如果我们需要知道 WeakMap 中键值对的数量,我们可以使用自定义的计数器:
--- ------- - -- --- ------ --- -- ----------------- - ---------- -
总结
Map 和 WeakMap 都是 ES6 中的新数据结构,它们可以帮助我们更方便地处理键值对。如果我们需要存储任意类型的键和值,我们可以使用 Map。如果我们需要存储对象的键和值,并且希望键是弱引用的,我们可以使用 WeakMap。
示例代码
下面是一个使用 Map 和 WeakMap 的示例代码:
----- ----- - --- ------ ----------------- ---------- ----------------- ---------- ------------------------------- -- -------- ----- --------- - --- ---------- ----- --- - --- ------------------ --------- -------------------------------- -- -------
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65505c197d4982a6eb938428