js数组去重

144 阅读1分钟

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;
}