ECMAScript 2015 中的 Map 和 Set 用法详解

阅读时长 5 分钟读完

在 ECMAScript 2015(ES6)中,Map 和 Set 是两个新的数据结构,它们分别用于存储键值对和唯一值。在前端开发中,使用它们能够简化代码,并提高代码执行效率。

Map

Map 是一种存储键值对的集合,其中可以使用任何类型的值作为键(包括对象、方法和原始类型)。相比于 ES5 中的 Object,Map 提供了更加丰富的 API,能够更加方便地操作键值对。下面是一些常见的 Map 用法:

创建 Map 对象

可以使用关键字 new 创建一个新的 Map 对象:

设置键值对

使用 set 方法可以向 Map 对象中添加或修改一个键值对:

获取键值对

使用 get 方法可以获取一个键的值:

如果键不存在,将返回 undefined

检查键是否存在

使用 has 方法可以检查一个键是否存在于 Map 对象中:

删除键值对

使用 delete 方法可以删除一个键值对:

如果键不存在,将返回 false

遍历键值对

可以使用 forEach 方法或者 for...of 语句遍历 Map 对象中的键值对:

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

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

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

获取键的集合和值的集合

可以使用 keys 方法和 values 方法分别获取 Map 对象中键的集合和值的集合:

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

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

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

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

获取 Map 对象中键值对的数量

可以使用 size 属性获取 Map 对象中键值对的数量:

Set

Set 是一种存储唯一值的集合,其中不能添加重复的元素,可以使用任何类型的值作为元素。与 Map 类似,Set 提供了丰富的 API,方便地操作集合。下面是一些常见的 Set 用法:

创建 Set 对象

可以使用关键字 new 创建一个新的 Set 对象:

向 Set 对象中添加元素

使用 add 方法向 Set 对象中添加元素:

检查元素是否存在

使用 has 方法检查 Set 对象中是否存在某个元素:

删除元素

使用 delete 方法删除 Set 对象中的一个元素:

同样的,如果元素不存在,将返回 false

遍历元素

可以使用 forEach 方法或者 for...of 语句遍历 Set 对象中的元素:

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

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

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

获取 Set 对象中元素的数量

可以使用 size 属性获取 Set 对象中元素的数量:

总结

在本文中,我们详细地介绍了 ECMAScript 2015 中的 Map 和 Set 两种数据结构。它们分别用于存储键值对和唯一值,在前端开发中得到了广泛的应用。通过学习它们的用法,我们可以更加方便地操作键值对和集合,简化代码并提高执行效率。

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

纠错
反馈