js 数组去重

admin 35 0

JavaScript 数组去重是一种常见的操作,对于任何开发人员来说都是非常重要的,在 JavaScript 中,有多种方法可以用来去除数组中的重复项,下面我将介绍几种常用的方法,并解释它们的优缺点。

1. 使用 Set

----------

Set 是一种数据结构,它只存储唯一值,我们可以利用这个特性来去除数组中的重复项。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];

这种方法非常简洁,而且性能也很好,它只适用于原始类型(如数字、字符串),对于对象则不适用。

2. 使用 filter

-----------

我们可以使用 `filter` 方法来过滤掉重复项,这种方法对于任何类型的数组都适用。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((value, index, self) => self.indexOf(value) === index);

这种方法可以很好地处理对象数组,对于大型数组来说,性能可能不是最优的。

3. 使用 for循环和 includes

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

我们还可以使用 `for` 循环和 `includes` 方法来检查数组中是否存在某个元素。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  if (!uniqueArr.includes(arr[i])) {
    uniqueArr.push(arr[i]);
  }
}

这种方法性能较好,但也比较繁琐。

4. 使用 JSON 和 Set

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

另一种常见的方法是将数组转换为 JSON 字符串,然后使用 Set 去除重复项。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(JSON.stringify(arr).split(","))].map(Number);

这种方法适用于任何类型的数组,但性能可能不是最优的,它不适用于包含循环引用的对象数组。

5. 使用 lodash 的 unique 方法

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

如果你使用 lodash 库,那么你可以使用 `_.unique` 方法来去除重复项。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = _.unique(arr);

lodash 的 `_.unique` 方法非常强大,它可以处理多种类型的数据,包括对象数组,它需要引入外部库。

在 JavaScript 中去除数组中的重复项有多种方法,具体选择哪种方法取决于你的需求和约束,如果你需要处理大型数组或需要处理对象数组,那么可能需要使用更复杂的方法,如果你只需要处理一些简单数据类型的小数组,那么使用 Set 或者 filter 方法就足够了。