c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

JavaScript数组怎么实现去重

李成白 2023-09-07编程经验
前言在开发中,经常会遇到需要对数组进行去重的场景。JavaScript提供了多种方法来实现数组去重,本文将介绍其中的几种常见方法,并分析其用途和规范。方法一:使用SetSet是ES6引入

前言

在开发中,经常会遇到需要对数组进行去重的场景。JavaScript提供了多种方法来实现数组去重,本文将介绍其中的几种常见方法,并分析其用途和规范。

方法一:使用Set

Set是ES6引入的新数据结构,用于存储唯一的值。通过将数组转换为Set,再将Set转换回数组,可实现去重操作。

function uniqArray(arr) {
  const set = new Set(arr);
  return Array.from(set);
}

const arr = [1, 2, 3, 3, 4, 5, 5];
const uniqArr = uniqArray(arr);
console.log(uniqArr);

这段代码中,首先通过new Set(arr)将arr转换为Set,Set会自动去重。然后通过Array.from(set)将Set转换为数组,返回去重后的数组。该方法简洁高效,适用于大多数场景。

方法二:使用filter

使用Array的filter方法结合indexOf判断数组元素是否重复,从而实现数组去重。

function uniqArray(arr) {
  return arr.filter((item, index, self) => self.indexOf(item) === index);
}

const arr = [1, 2, 3, 3, 4, 5, 5];
const uniqArr = uniqArray(arr);
console.log(uniqArr);

在这段代码中,使用filter方法遍历数组arr,对于每个元素,使用indexOf判断其第一次出现的位置index与当前位置index是否相等,如果相等则保留,否则过滤掉。返回的数组就是去重后的数组。该方法简单易懂,但对于大型数组效率较低。

方法三:使用reduce

使用Array的reduce方法和includes判断数组元素是否重复,从而实现数组去重。

function uniqArray(arr) {
  return arr.reduce((prev, cur) => {
    if (!prev.includes(cur)) {
      prev.push(cur);
    }
    return prev;
  }, []);
}

const arr = [1, 2, 3, 3, 4, 5, 5];
const uniqArr = uniqArray(arr);
console.log(uniqArr);

这段代码中,使用reduce方法遍历数组arr,在每次迭代中判断prev数组中是否包含当前元素cur,如果不包含则将其添加到prev中。返回的prev即为去重后的数组。该方法代码简洁,效率较高。

总结

本文介绍了JavaScript数组去重的三种常见方法:使用Set、使用filter和indexOf、使用reduce和includes。这些方法各有优劣,选择合适的方法取决于实际的需求和数据规模。在开发中,去重是一个常见的操作,掌握这些方法能够提高代码的质量和性能。

文章评论