JS数组去重的几种方法

1.使用indexof方法判断去重

function norepeat1(arr){
    let res = [];
    for(let i = 0; i < arr.length; i++){
        if(res.indexOf(arr[i]) == -1){
            res.push(arr[i]);
        }
    }
    return res;
}

        首先用for循环对传入的数组进行遍历,新建一个返回结果数组 res = [] ,用indexof方法判断值是否存在于res,存在返回1,不存在返回-1,返回值为-1时将值通过push()方法存入res。

2.使用双for循环方法去重

function norepeat2(arr){
    for(let i = 0; i < arr.length - 1; i++){
        for(let j = i + 1; j < arr.length; j++){
            if(arr[i] === arr[j]){
                arr.splice(j,1);
                j--;
            }
        }
    }
    return arr;
}

        该方法主要是将每一个值进行一对一比较,出现相同值时使用splice方法删除,保持值的唯一以达到去重的效果。

3..先使用sort方法进行排序再相邻比较去重

function norepeat3(arr){
    arr.sort();
    for(let i = 0; i < arr.length - 1; i++){
        if(arr[i] === arr[i+1]){
            arr.splice(i+1,1);
            i--;
        }
    }
    return arr;
}

        其实这个方法和上一个方法差不多,可以说是优化版本,这个方法使用sort方法排序后只需要前后的值比较就可以,不需要使用两个for循环方法。

4.使用set方法

let set = new Set(arr);
res = [...set];
console.log(res);

        由于ES6 提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值(set本身是一个构造函数,用来生成 Set 数据结构),所以也可以通过set方法去重。

        以上是我了解的在JS中四种数组去重的方法,大佬们还知道其他方法的话求分享呀!

你可能感兴趣的:(javascript)