ECMAScript 2016 中的 Map 对象

阅读时长 5 分钟读完

ECMAScript 2016 是 JavaScript 的一个重要版本,它引入了许多新的特性和改进。其中一个新的特性是 Map 对象。Map 是一种 key-value 数据结构,可以存储任意类型的键和值,在 ECMAScript 2016 中成为了一个内置对象。

Map 的基本用法

Map 对象提供了以下几个基本的方法:

  • set(key, value): 向 Map 中添加一个键值对。
  • get(key): 获取 Map 中指定键对应的值。
  • has(key): 判断 Map 中是否存在指定的键。
  • delete(key): 删除 Map 中指定的键值对。
  • clear(): 清空 Map 中的所有键值对。
  • size: 返回 Map 中键值对的个数。

示例:

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

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

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

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

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

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

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

Map 的遍历方式

Map 对象提供了以下几种方式遍历键值对:

  • forEach(callbackFn[, thisArg]): 对 Map 中的每个键值对执行指定的回调函数。
  • keys(): 返回一个包含 Map 中所有键的迭代器。
  • values(): 返回一个包含 Map 中所有值的迭代器。
  • entries(): 返回一个包含 Map 中所有键值对的迭代器。
  • Symbol.iterator: 返回一个包含 Map 中所有键值对的迭代器。

示例:

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

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

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

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

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

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

Map 对象与 Object 对象的比较

在 JavaScript 中,Object 对象是一种常用的 key-value 数据结构,但在很多情况下,Map 对象可能更加适合需要处理大量键值对的场景。两者的主要区别如下:

  • Object 对象只能用字符串或 symbol 类型作为键名,而 Map 对象则可以使用任意类型的值作为键名。
  • Object 对象中键名必须是字符串,而 Map 对象中键名可以是任意值。
  • Object 对象默认情况下不支持遍历,需要借助其他方法实现遍历,而 Map 对象提供了多种遍历方式。

示例:

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

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

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

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

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

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

总结

在 ECMAScript 2016 中引入的 Map 对象提供了更加灵活和便捷的 key-value 数据结构。与 Object 对象相比,Map 对象在键名类型、键名内容和遍历方式方面拥有更多的优势,可以在编写 JavaScript 程序时更加灵活地处理各种数据类型和数据结构。

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

纠错
反馈