javascript数组去重的几种方法

1. javascript数组去重的几种方法

1.使用Set去重

ES6中Set是一种新的数据结构,它可以自动去重。可以将数组转换成Set,再转回数组,实现数组去重。

let arr = [1,2,2,3,4,4];
arr = Array.from(new Set(arr));
console.log(arr); //[1, 2, 3, 4]

2.使用filter方法配合indexOf实现去重

filter会依次遍历每个元素,对每个元素执行对应的函数,并将返回值为true的元素放入一个新的数组中。我们可以使用indexOf方法判断元素是否为重复的。

let arr = [1,2,2,3,4,4];
arr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(arr); //[1, 2, 3, 4]

3.使用reduce方法实现去重

reduce方法可以将一个数组通过回调函数最终转换成一个值。在回调函数中可以使用indexOf方法判断元素是否重复。

let arr = [1,2,2,3,4,4];
arr = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(arr); //[1, 2, 3, 4]

4.使用Map方法实现去重

Map是一种类似于对象的数据结构,但是它的键可以是任何数据类型。我们可以将数组中的元素作为Map的键,然后遍历整个数组,最后取出所有Map的键,就实现了数组去重。

let arr = [1,2,2,3,4,4];
let map = new Map();
arr.forEach(item => map.set(item, true));
arr = Array.from(map.keys());
console.log(arr); //[1, 2, 3, 4]

5.使用双重for循环实现去重

我们可以使用两个for循环遍历整个数组,比较每个元素是否重复。如果重复就删除后面的元素。循环结束后,就可以得到一个去重后的数组。

let arr = [1,2,2,3,4,4];
for (let i = 0; i < arr.length; i++) {
  for (let j = i + 1; j < arr.length; j++) {
    if (arr[i] === arr[j]) {
      arr.splice(j, 1);
      j--;
    }
  }
}
console.log(arr); //[1, 2, 3, 4]

类似文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注