ES12 中的 Map 和 Set:新方法和语法

在前端开发中,Map 和 Set 是常用的数据结构之一。ES12 (即 ECMAScript 2021)中,Map 和 Set 也得到了更多的增强和优化。本文将介绍 ES12 中 Map 和 Set 的新方法和语法,并提供实际示例和指导意义。

Map

Map 是一种可以存储键值对的集合。在 ES12 中,Map 有以下新特性:

1. 转换为数组

ES12 中,可以使用 Array.from() 方法将 Map 转换为数组。例如:

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

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

2. 合并 Map

ES12 中,可以使用 Map.prototype.merge() 方法将两个 Map 合并。如果有相同的键,后面的 Map 中的值会覆盖前面的 Map 中的值。例如:

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

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

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

如果要保留原来的值,可以使用 Map.prototype.setIfAbsent() 方法。例如:

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

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

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

3. 遍历键和值

ES12 中,可以使用 Map.prototype.forEach() 方法遍历 Map 中的键和值。例如:

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

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

Set

Set 是一种可以存储唯一值的集合。在 ES12 中,Set 有以下新特性:

1. 转换为数组

ES12 中,可以使用 Array.from() 方法将 Set 转换为数组。例如:

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

2. 添加多个值

ES12 中,可以使用 Set.prototype.add() 方法添加多个值。例如:

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

3. 遍历值

ES12 中,可以使用 Set.prototype.forEach() 方法遍历 Set 中的值。例如:

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

总结

ES12 中的 Map 和 Set 增加了许多实用的新方法和语法,可以更方便地处理键值对和唯一值的集合。在实际开发中,合理运用这些新特性可以提高代码效率和可读性。

参考资料

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/660a5e91d10417a2229f2e3e