七种JS实现数组去重的方式
数组去重是JS中常用的操作之一。本文将介绍七种JS实现数组去重的方式,其中包括了常见的基于ES6的Set去重方式、基于map去重方式,以及经典的双重循环方式、indexOf方式、includes方式、filter方式和reduce方式。
在介绍这七种去重方式前,先定义一个示例数组arr,便于后续的演示:
const arr = [1, 2, 2, 3, 4, 4, 5];
使用ES6的Set去重
ES6新增了Set类,它的特点是元素唯一、无序且可以迭代。使用Set去重需要将数组转为Set,再将Set转为数组即可,实现代码如下:
const arr2 = [...new Set(arr)];
console.log(arr2); // [1, 2, 3, 4, 5]
使用map去重
使用map去重可以实现保持元素在原数组中的顺序的去重,实现方式如下:
const map = new Map();
const arr3 = arr.filter(item => !map.has(item) && map.set(item, 1));
console.log(arr3); // [1, 2, 3, 4, 5]
使用双重循环去重
双重循环方式是一种常见的去重方式,实现方式如下:
const arr4 = [];
for(let i = 0, len = arr.length; i < len; i++) {
for(let j = i + 1; j < len; j++) {
if(arr[i] === arr[j]) {
j = ++i;
}
}
arr4.push(arr[i]);
}
console.log(arr4); // [1, 2, 3, 4, 5]
使用indexOf去重
使用indexOf方式可以较简单地去重,实现方式如下:
const arr5 = [];
for(let i = 0, len = arr.length; i < len; i++) {
if(arr5.indexOf(arr[i]) === -1) {
arr5.push(arr[i]);
}
}
console.log(arr5); // [1, 2, 3, 4, 5]
使用includes去重
使用includes方式与indexOf方式类似,实现方式如下:
const arr6 = [];
for(let i = 0, len = arr.length; i < len; i++) {
if(!arr6.includes(arr[i])) {
arr6.push(arr[i]);
}
}
console.log(arr6); // [1, 2, 3, 4, 5]
使用filter去重
使用filter方式可以实现去重,并返回一个新数组,实现方式如下:
const arr7 = arr.filter((item, index, arr) => {
return arr.indexOf(item) === index;
});
console.log(arr7); // [1, 2, 3, 4, 5]
使用reduce去重
使用reduce方式也可以实现数组去重,实现方式如下:
const arr8 = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(arr8); // [1, 2, 3, 4, 5]
以上就是七种JS实现数组去重的方式的详细介绍,每种方式都有自己的特点和适用场景,开发者可以根据需要选择不同的去重方式进行使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:七种JS实现数组去重的方式 - Python技术站