ES6 中如何使用 Set 实现数组去重

阅读时长 4 分钟读完

什么是 Set?

Set 是 ES6 中新增的一种数据结构类型,它类似于数组(Array),但它的成员是唯一的,不存在重复的值。Set 的特点如下:

  • Set 存储的值没有重复项。
  • Set 内部使用严格相等比较规则判断相等的元素。例如,Set 对象内部的 NaN 与 NaN 是不等的,因为 NaN 与任何值都不相等,所以 Set 里面可以存储不同的 NaN。
  • Set 本身是一个构造函数,可以使用 new 命令生成一个实例。可以像普通数组一样使用 Set 类型的实例。

如何使用 Set 去重?

ES6 中提供了 Set 接口来去除数组的重复元素。将数组转成 Set类型,然后将 Set 类型转成数组即可实现数组去重。

上面的代码中,通过 new Set(arr) 将数组 arr 转换为一个 Set 类型的数据结构,使用 ...

运算符将 Set 类型转换为数组,从而达到了数组去重的目的。这种方法可以去除字符串,对象数组等多种复杂类型的数组中的重复项。

Set 去重的优势

相比其他去重方法(如 for 循环或对象键值对去重),使用 Set 去重有如下优势:

  • Set 内置去重方法性能更高效。
  • Set 内置去重方法可以去重任何数据类型,无需区分类型,使用起来简单。
  • Set 内置去重方法返回的是 Set 类型,可以对结果进行进一步的操作,比如取交集、并集等操作。

使用 Set 的案例

下面我们提供一个实际的案例,根据用户行为统计出访问次数前三的文章:

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

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

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

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

上面的代码中,我们将阅读次数存入 Set 类型变量 viewCountSet,并通过 [...]运算符将其转换为数组。

注意,由于 Set 类型是去重后的数组,这里 topThree 数组在 push() 的过程中不会出现重复的文章。

结论

Set 是一种高效的去重方法,在日常的开发中,经常会用到 Set 来去除数组中的重复项,并且可以简单地进行各种操作,因此深入学习 Set 的使用是非常有意义的。

在实际使用中,我们可以根据具体应用的场景,使用 Set 方法进行数据的去重,以便更好地提高程序的性能和效率。

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

纠错
反馈