返回

盘点JS面试必考题之数组去重

前端

JS面试题之数组去重

数组去重是 JavaScript 面试中常见的问题。给定一个数组,要求返回一个包含数组中所有唯一元素的新数组。

使用 indexOf() 方法

indexOf() 方法可以返回数组中指定元素的索引值。如果数组中不包含指定元素,则返回 -1。我们可以利用 indexOf() 方法来实现数组去重。

const arr = [1, 2, 3, 4, 5, 1, 2, 3];

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

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

使用 Set 对象

Set 对象是 JavaScript 中的一个内置对象,它可以存储唯一值。我们可以利用 Set 对象来实现数组去重。

const arr = [1, 2, 3, 4, 5, 1, 2, 3];

const uniqueArr = [...new Set(arr)];

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

使用 filter() 方法

filter() 方法可以创建一个包含通过指定条件的所有元素的新数组。我们可以利用 filter() 方法来实现数组去重。

const arr = [1, 2, 3, 4, 5, 1, 2, 3];

const uniqueArr = arr.filter((item, index, arr) => {
  return arr.indexOf(item) === index;
});

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

使用 reduce() 方法

reduce() 方法可以将数组中的所有元素减少为一个单一值。我们可以利用 reduce() 方法来实现数组去重。

const arr = [1, 2, 3, 4, 5, 1, 2, 3];

const uniqueArr = arr.reduce((acc, item) => {
  if (acc.indexOf(item) === -1) {
    acc.push(item);
  }
  return acc;
}, []);

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

总结

本文介绍了四种不同的数组去重方法,包括使用 indexOf() 方法、使用 Set 对象、使用 filter() 方法和使用 reduce() 方法。这些方法各有优缺点,开发者可根据具体情况选择合适的方法。