数组去重

对前端人员来说,数组去重在面试时被问的几率是很大的,那么数组去重到底是如何实现的呢?下面我们来看看几种数组去重的方法吧~~
  1. forEach方法 ? ? ?

    代 码 如 下 所 示 : \color{red}{代码如下所示:}

    function norepeat(arr){
        var newarr=[];
        arr.forEach(function(value,key){
            if(newarr.indexOf(value)==-1){
                newarr.push(value);
            }
        });
        return newarr;
    }
    var arr=[11,22,11,44,11,44];
    console.log(norepeat(arr));
    

    结 果 如 下 所 示 : \color{red}{结果如下所示:}

    [11,22,44]
    
  2. for in方法(下标查询) ? ? ?

    代 码 如 下 所 示 : \color{red}{代码如下所示:}

    function norepeat(arr){
        var newarr=[];
        for(let i in arr){
            if(newarr.indexOf(arr[i])==-1){
                newarr.push(arr[i]);
            }
        }
        return newarr;
    }
    var arr=[11,22,11,44,11,44,55];
    console.log(norepeat(arr));
    

    结 果 如 下 所 示 : \color{red}{结果如下所示:}

    [11,22,44,55]
    
  3. sort()? ? ?

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

    代 码 如 下 所 示 : \color{red}{代码如下所示:}

    function norepeat(arr){
        var newarr=arr.sort(); 
        var res=[newarr[0]];
        for(var i=0;i<newarr.length;i++){
            if(newarr[i]!=res[res.length-1]){
                res.push(newarr[i]);
            }
        }
        return res;
    }
    var arr=[1,2,1,3,2,9,3,4];
    console.log(norepeat(arr)); 
    

    结 果 如 下 所 示 : \color{red}{结果如下所示:}

    [1, 2, 3, 4, 9]
    
  4. splice ? ? ?

    代 码 如 下 所 示 : \color{red}{代码如下所示:}

    function norepeat(arr){
        var i,j;
        for(var i=0;i<arr.length;i++){
            for(var j=i+1;j<arr.length;j++){
                if(arr[i]==arr[j]){
                    arr.splice(j,1);
                    // arr.length--;
                    j--;
                }
            }
        }
        return arr;
    }
    var arr=[1,2,1,3,2,9,3,4,5];
    console.log(norepeat(arr)); 
    

    结 果 如 下 所 示 : \color{red}{结果如下所示:}

    [1, 2, 3, 9, 4, 5]
    
  5. set ? ? ?

    es6方法

    代 码 如 下 所 示 : \color{red}{代码如下所示:}

    方法一:
    var arr=[1,2,5,4,2,1];
    var newarr=new Set(arr); //注意Set是大写
    console.log(newarr); // {1, 2, 5, 4}
    console.log(typeof newarr); 
    
    方法二: 
    //以上方法打印出的结果是对象的形式,若是数组的形式,采用以下方法
    
    function norepeat(arr){
        //Set数据结构,它类似于数组,其成员的值都是唯一的
         return Array.from(new Set(arr));
        // 利用Array.from将Set结构转换成数组
    }
        var arr=[1,2,4,3,2,1];
        console.log(norepeat(arr)); //[1, 2, 4, 3]
    

以上是常见的数组去重的方法,欢迎大家指正!???

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值