js数组去重是平时我们经常会遇到的问题,整理了一些比较实用的数组去重方法如下:
1.遍历数组法(indexOf)
最简单的去重方法。实现思路:新建一个新数组,遍历要去重的数组,然后通过ES5中的indexOf方法判断当前值是否在新建的数组中,如果不在则push到这个新建的数组中,如果在则不添加。
function unique(arr) {
let res = [];
for (let k of arr) {
if (res.indexOf(k) < 0) {
res.push(k);
}
}
return res;
}
2.includes()方法
和indexOf()类似,如果新数组中没有该元素,则添加到新数组中。
function unique(arr) {
let res = [];
for (let k of arr) {
if (!res.includes(k)) {
res.push(k);
}
}
return res;
}
3.排序后相邻去除法
虽然原生数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。
function unique(arr) {
arr.sort();
let res = [arr[0]];
for (let i = 1; i < arr.length; i++) {
if (arr[i] != res[res.length-1]) res.push(arr[i]);
}
return res;
}
4.使用new Set()方法
new Set():伪数组,利用(...)扩展运算符转换为真正的数组。
function unique(arr) {
let res = [...new Set(arr)];
return res;
}