数组去重的四种方法

1、indexof去重方法

 遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组

function remove(arr) {
        var temp = [];  //建立一个临时数组
        for(var i = 0;i < arr.length;i++){
            if (temp.indexOf(arr[i]) === -1){//如果临时数组里面没有这个数就把这个数存进去
                temp.push(arr[i]);
            }
        }
        return temp;
    }

    var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2];
    console.log(remove(arr1));

 

2、先将原数组排序,在与相邻的进行比较,如果不同则存入新数组。

function remove(arr) {
        var newArr = arr.sort();//先排序
        var temp = [];
        for(var i = 0;i < newArr.length;i++){
            if (newArr[i] !== newArr[i+1]){
                temp.push(newArr[i]);
            }
        }
        return temp;
    }

    var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2];
    console.log(remove(arr1));

 

3、数组下标法

如果当前数组的第i项在当前数组中第一次出现的位置不是i, 那么表示第i项是重复的,忽略掉。否则存入结果数组。
function remove(arr) {
        var temp = [];
        for(var i = 0;i < arr.length;i++){
            //如果当前数组的第i项在当前数组中第一次出现的位置是i
            if (arr.indexOf(arr[i]) === i){
                temp.push(arr[i]);
            }
        }
        return temp;
    }

    var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2];
    console.log(remove(arr1));

 

4、利用ES6中的set方法

 function remove(arr){
        //Set数据结构,它类似于数组,其成员的值都是唯一的
        return Array.from(new Set(arr));// 利用Array.from将Set结构转换成数组
    }
    var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2];
    console.log(remove(arr1));

 

上一篇:js 优化篇 (未完待续...)


下一篇:2021-10-23