返回

用三步妙招,数组去重不再难,学会不花一分钱!

前端

数组去重是一种常见的编程任务,它涉及删除数组中的重复元素。在JavaScript中,有几种方法可以实现数组去重。在本文中,我们将讨论三种最常用的方法:使用Set和Map数据结构,以及使用数组的filter()方法。

1. 使用Set数据结构

Set是一种内置的数据结构,它可以存储唯一的值。这意味着如果我们把一个数组中的元素添加到Set中,那么重复的元素将被自动忽略。我们可以使用以下代码来实现数组去重:

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

这种方法的优点是简单高效,并且不会改变原数组。然而,它也有一个缺点,那就是它不能保持元素的原始顺序。如果我们需要保持元素的原始顺序,那么我们就需要使用Map数据结构。

2. 使用Map数据结构

Map是一种内置的数据结构,它可以存储键值对。我们可以使用Map来存储数组中的元素,并将元素作为键,元素出现的次数作为值。然后,我们可以遍历Map,只输出键,这样就可以实现数组去重。我们可以使用以下代码来实现数组去重:

const numbers = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueNumbers = new Map();
for (const number of numbers) {
  if (uniqueNumbers.has(number)) {
    uniqueNumbers.set(number, uniqueNumbers.get(number) + 1);
  } else {
    uniqueNumbers.set(number, 1);
  }
}
console.log(uniqueNumbers); 

这种方法的优点是它可以保持元素的原始顺序。然而,它也有一个缺点,那就是它比Set方法更复杂,而且它会改变原数组。

3. 使用数组的filter()方法

数组的filter()方法可以根据提供的函数对数组中的元素进行过滤,只保留满足该函数的元素。我们可以使用filter()方法来实现数组去重。我们可以使用以下代码来实现数组去重:

const numbers = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueNumbers = numbers.filter((number, index, array) => {
  return array.indexOf(number) === index;
});
console.log(uniqueNumbers); // [ 1, 2, 3, 4, 5 ]

这种方法的优点是简单易懂,并且不会改变原数组。然而,它也有一个缺点,那就是它比Set和Map方法都要慢。

总结

在本文中,我们讨论了三种数组去重的方法。每种方法都有其优缺点,适合不同的场景。读者可以根据自己的需求选择合适的方法来进行数组去重操作。