数组去重的方法

1.

 // 数组去重
    // 检查是否有重复数据,有,删除,没有,过
    function norepeat(arr){
        // 先准备空数组
        var sArr = [];
        // 拿到大数组中所有数据
        for(var i=0;i<arr.length;i++){
            // 依次检测原来的空数组中是否包含大数组的数据,不包含,就放进去
            if(!has(sArr,arr[i])){
                sArr.push(arr[i])
            }
        }
        return sArr;
    }
    var a = norepeat([1,2,3,4,4,4,5,6,7,6,5,4,3,2,1,1,1,1])
    console.log(a)
    
    // 检测数组中数据的功能
    function has(arr,n){
        for(var i=0;i<arr.length;i++){
            if(arr[i] === n){
                return true;
            }
        }
        return false;
    }

2. for of + includes

 var arr =[1,2,3,3,21,4,4,6]
    var arr1 = [];
    for(let i of arr){
        !arr1.includes(i)&& arr1.push(i)
    }
    console.log(arr1);

3. fillter + indexOf

var arr = [1, 2, 3, 3, 21, 4, 4, 6]
   var arr1=  arr.filter(function(item,index){
       return arr.indexOf(item) === index;
    })
  console.log(arr1)

4.  new  Set()

var arr =[1,1,2,2,3,3,4,4,5,5];
    var myset = new Set(arr);
    console.log(myset)
    var newArr =[];
    for(var i of myset){
        newArr.push(i)
    } 
    console.log(newArr);

5.双层for循环加splice

function unique(arr) {
        for (var i = 0; i < arr.length; i++) {
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[i] == arr[j]) {         //第一个等同于第二个,splice方法删除第二个
                    arr.splice(j, 1);
                    j--;
                }
            }
        }
        return arr;
    }

6.利用sort()方法

function unique(arr) {
        if (!Array.isArray(arr)) {
            console.log('type error!')
            return;
        }
        arr = arr.sort()
        var arrry = [arr[0]];
        for (var i = 1; i < arr.length; i++) {
            if (arr[i] !== arr[i - 1]) {
                arrry.push(arr[i]);
            }
        }
        return arrry;
    }

 

posted @ 2019-10-21 10:01  ZL_light  阅读(186)  评论(0编辑  收藏  举报