ES6 中的 Map 和 WeakMap:集合和对象的键关联方案

阅读时长 4 分钟读完

在 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

纠错
反馈