ES6 中的 Map 与 Set 数据结构详解

阅读时长 4 分钟读完

在 ES6 中,提供了两种新的数据结构:Map 和 Set。Map 对象是一个简单的键/值映射,而 Set 对象是一种集合类型,其中每个值只能出现一次。本篇文章将深入探讨这两种数据结构的详细用法。

Map 数据结构

Map 对象是一个无序的键值对,其中键可以是任何类型(包括 undefined),值也可以是任何类型。它比普通对象有很多优点:

  • 对于普通对象,键只能是字符串或 Symbol 类型,而 Map 的键可以是任何类型;
  • Map 的键值对可以遍历且顺序是按照插入顺序保证的;
  • 可以很容易地获取到 Map 中键值对的数量。

下面是 Map 对象的基本操作示例:

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

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

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

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

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

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

需要注意的是,Map 对象的键值对顺序是按照插入顺序保证的。如果需要按照其它顺序遍历键值对,可以使用 keys()values()entries() 方法得到对应的迭代器,然后使用迭代器中的方法进行排序和筛选。

Set 数据结构

Set 对象是一个集合,集合中的元素按照插入顺序进行排序且唯一。 Set 对象也有很多优点:

  • 集合中的元素唯一,不会重复出现;
  • 可以很容易地获取集合中元素的数量;
  • 可以很容易地求两个集合的交、差和并集。

下面是 Set 对象的基本操作示例:

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

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

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

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

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

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

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

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

需要注意的是,Set 对象中的元素唯一且按照插入顺序进行排序。如果需要按照其它顺序遍历元素,可以使用 values() 方法得到一个迭代器,然后使用迭代器中的方法进行排序和筛选。

总结

在 JavaScript 中使用 Map 和 Set 数据结构可以帮助我们更加高效地处理数据。Map 数据结构可以处理键值对,Set 数据结构可以处理集合。两者都有很多优点,然而,在实际应用中,需要根据实际情况选择应该使用哪种数据结构。

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

纠错
反馈