JavaScript数组去重的6个方法

在前端开发中,我们经常需要处理数组去重的问题。本文将介绍JavaScript中常用的6种去重方法,包括ES6及之前的实现方式,并提供每种方法的优缺点和适用场景。

1. 使用 Set

ES6引入了Set数据结构,可以用来去重一个数组。Set会自动忽略重复的值,只保留唯一的元素。

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

优点:代码简洁易懂,性能较好。

缺点:无法去重对象等非基本数据类型。

适用场景:数据类型为基本类型时使用。

2. 使用 filter

利用filter方法和indexOf方法对数组进行去重:

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

优点:可根据需求扩展过滤条件。

缺点:性能不如Set。

适用场景:数据量较小的情况下使用。

3. 使用 reduce

reduce()方法遍历数组,将每个元素转换为一个累加器值。我们可以通过判断计数器中是否已存在该元素,实现数组去重:

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

优点:可根据需求扩展过滤条件。

缺点:性能不如Set。

适用场景:数据量较小的情况下使用。

4. 使用 Map

Map是一种键值对的集合,可以通过key来区分不同的元素。我们可以利用Map的特性进行去重:

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

优点:可根据需求扩展过滤条件。

缺点:性能不如Set。

适用场景:数据类型为非基本类型时使用。

5. 使用 includes

includes()方法返回一个布尔值,表示某个数组是否包含给定的值。我们可以遍历原数组,在新数组中检查是否已经包含该元素,实现去重:

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

优点:代码简单易懂。

缺点:性能不如Set。

适用场景:数据量较小的情况下使用。

6. 使用双重循环

最基本的方法是使用两层循环,比较每个元素是否与其他元素相同,如果不同,则将其加入新数组中:

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

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