返回

JavaScript 中数组去重的 4 种常用方法

见解分享

JavaScript 中数组去重的 4 种常用方法

作为一名 JavaScript 技术博客专家,我曾潜心钻研 JavaScript 的方方面面,对数组去重问题也颇有心得。今天,我将从独特的视角切入,分享 4 种常用且高效的数组去重方法,帮助您全面掌握这一重要技巧。

1. ES6 去重

ES6(ECMAScript 2015)引入了新的 Set 数据结构,它可以自动去除数组中的重复元素。使用方法很简单:

const numbers = [1, 2, 2, 3, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]

2. 双重遍历去重

这种方法需要使用双重 for 循环,时间复杂度为 O(n^2)。

const numbers = [1, 2, 2, 3, 3, 4, 4, 5];
const uniqueNumbers = [];

for (let i = 0; i < numbers.length; i++) {
  if (!uniqueNumbers.includes(numbers[i])) {
    uniqueNumbers.push(numbers[i]);
  }
}

console.log(uniqueNumbers); // [1, 2, 3, 4, 5]

3. indexOf 或 includes 去重

indexOf 和 includes 方法可以帮助我们找到数组中第一个或最后一个与给定元素相等的位置。我们可以利用这一点进行去重:

const numbers = [1, 2, 2, 3, 3, 4, 4, 5];
const uniqueNumbers = [];

for (let i = 0; i < numbers.length; i++) {
  if (uniqueNumbers.indexOf(numbers[i]) === -1) {
    uniqueNumbers.push(numbers[i]);
  }
}

// 或者使用 includes 方法
for (let i = 0; i < numbers.length; i++) {
  if (!uniqueNumbers.includes(numbers[i])) {
    uniqueNumbers.push(numbers[i]);
  }
}

console.log(uniqueNumbers); // [1, 2, 3, 4, 5]

注意:includes 方法可以去除 NaN,而 indexOf 不能。

4. filter 去重

filter 方法可以创建一个包含数组中满足给定条件的所有元素的新数组。我们可以利用这一点进行去重:

const numbers = [1, 2, 2, 3, 3, 4, 4, 5];
const uniqueNumbers = numbers.filter((num, index) => numbers.indexOf(num) === index);
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]

总结

本文介绍了 JavaScript 中数组去重的 4 种常用方法。每种方法都有其优缺点,选择哪种方法取决于具体场景。了解这些技巧对于高效处理数组数据至关重要。如果您有任何其他问题或建议,欢迎随时提出,我会尽我所能为您提供帮助。