ES7 基础:Set 和 Map 集合详解

阅读时长 7 分钟读完

本文将介绍 ES7 中新增的 Set 和 Map 集合,包括其定义和基本使用方法,并且会分别介绍 Set 和 Map 的不同特性和应用场景。最后,本文还会提供一些示例代码和学习建议。

Set 集合

Set 是一种无序、唯一的数据结构,它的定义很简单:

上面的代码创建了一个空的 Set 集合,我们也可以通过传入一个可迭代的对象来初始化 Set 集合,例如:

上面的代码会创建一个包含了 1、2、3 元素的 Set 集合。

Set 基本操作

Set 集合提供了如下的基本操作方法:

  • add(value):向 Set 集合添加一个值,如果值已存在则不会添加(Set 集合中的值是唯一的)。
  • delete(value):从 Set 集合中删除一个值,如果该值不存在则不会做任何操作。
  • has(value):判断 Set 集合是否包含某个值,返回布尔值 true 或 false。
  • clear():清空 Set 集合。

下面是一些示例代码:

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

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

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

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

Set 遍历方法

Set 集合提供了三种遍历方法:

  • forEach(callbackFn, thisArg?):遍历 Set 集合中的每一个元素,回调函数接收三个参数:当前元素值、当前元素的索引、Set 集合本身。第二个参数是可选参数,用来指定回调函数执行时的上下文 this。
  • entries():返回一个新的迭代器对象,它的元素是 [value, value] 的数组,即每个元素都是一个包含两个值的数组,第一个值和第二个值都是当前 Set 集合中的元素。
  • values():返回一个新的迭代器对象,它的元素是当前 Set 集合中的所有值(value),不包含索引。

下面是一些示例代码:

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

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

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

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

Set 应用

Set 在很多场景下都很有用,例如:

  • 判断一个数组中是否有重复元素。
  • 去除一个数组中的重复元素。
  • 统计一个字符串中有多少个不同的字符。

下面是一些示例代码:

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

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

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

Map 集合

Map 是一种可迭代的、键值对的数据结构,它很容易理解:

上面的代码创建了一个空的 Map 集合,我们也可以通过传入一个可迭代的对象来初始化 Map 集合,例如:

上面的代码会创建一个包含了 name、age 和 sex 三个键的 Map 集合。

Map 基本操作

Map 集合提供了如下的基本操作方法:

  • set(key, value):向 Map 集合添加一个键值对。
  • get(key):获取 Map 集合中某个键对应的值。
  • has(key):判断 Map 集合中是否包含某个键,返回布尔值 true 或 false。
  • delete(key):从 Map 集合中删除某个键及其对应的值,如果该键不存在则不会做任何操作。
  • clear():清空 Map 集合。

下面是一些示例代码:

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

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

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

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

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

Map 遍历方法

Map 集合提供了三种遍历方法:

  • forEach(callbackFn, thisArg?):遍历 Map 集合中的每一对键值对,回调函数接收三个参数:当前元素的值、当前元素的键、Map 集合本身。第二个参数是可选参数,用来指定回调函数执行时的上下文 this。
  • entries():返回一个新的迭代器对象,它的元素是 [key, value] 的数组,即每个元素都是一个包含两个值的数组,第一个值是当前 Map 集合中的键,第二个值是当前 Map 集合中的值。
  • keys():返回一个新的迭代器对象,它的元素是当前 Map 集合中的所有键。
  • values():返回一个新的迭代器对象,它的元素是当前 Map 集合中的所有值。

下面是一些示例代码:

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

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

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

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

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

Map 应用

Map 在很多场景中都很有用,尤其是在需要维护某个键对应的值时。例如:

  • 统计一个数组中每个元素出现的次数。
  • 缓存函数的计算结果。

下面是一些示例代码:

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

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

总结

本文对 ES7 中新增的 Set 和 Map 集合做了详细的介绍,包括其定义、基本操作、遍历方法和应用。希望本文能够帮助读者更好地了解这两种数据结构,并且能够在实际开发中应用它们。最后,建议读者在学习过程中多动手实践,加深对 Set 和 Map 的理解。

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

纠错
反馈