数组去重复方法总结

数组去重复方法总结

//  方法一    思路:创建一个存放原数组第一个数的新数组,用原数组与新数组的数一一对比,不同则存放进新数组里
     function repArr(oldArr){
        var newArr=[oldArr[0]];
        for(var i=0;i<oldArr.length;i++){
            var repeat=false;
            for(var j=0;j<newArr.length;j++){
                if(oldArr[i]===newArr[j]){
                    repeat = true;
                     break;                    
                }                        
            }
            if(!repeat){
                 newArr.push(oldArr[i]) 
                }
        }
        return newArr;
     }
     var oldArr=[0,1,2,3,1,2]
     console.log(repArr(oldArr))
//  方法二    思路:  先将原数组排序,在与相邻的进行比较,如果不同则存入新数组。
             function repArr(oldArr){
                var reoldArr=oldArr.sort();
                var newArr=[oldArr[0]]
                for(var i=0;i<reoldArr.length;i++){
                    if(reoldArr[i]!=newArr[newArr.length-1]){
                         newArr.push(reoldArr[i])   
                    }
                }
                return newArr;
             }
             var oldArr=[0,1,2,3,1,2]
             console.log(repArr(oldArr))
方法三   思路:  利用对象属性存在的特性,如果没有该属性则存入新数组。   
            function repArr(oldArr){
                var newArr = [];
                var obj = {};
                for(var i=0; i<oldArr.length; i++){
                    if( !obj[oldArr[i]] ){                      
                        obj[oldArr[i]] = 1;
                        alert(obj)
                        newArr.push(oldArr[i]);
                    }
                }

                return newArr;
            }
             var oldArr=[0,1,2,3,1,2]
             console.log(repArr(oldArr));
方法四    思路:   利用数组原型对象上的includes方法。

            function repArr(oldArr){
                var newArr = [];             
                for(var i=0; i<oldArr.length; i++){
                    if( !newArr.includes(oldArr[i]) ){ // 如果newArr新数组包含当前循环item
                        newArr.push(oldArr[i]);
                    }
                }

                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
             console.log(repArr(oldArr));
方法五    思路:   利用数组原型对象上的 filter 和 includes方法。
            function repArr(oldArr){
                var newArr = [];             
                res = oldArr.filter(function(item){
                  return newArr.includes(item) ? '' : newArr.push(item);
                });          
                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr)); 
方法六    思路:  利用数组原型对象上的 forEach 和 includes方法。
            function repArr(oldArr){
                var newArr = [];             
                oldArr.forEach(function(item){
                  newArr.includes(item) ? '' : newArr.push(item);
                });          
                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr)); 
方法七    思路:  利用数组的indexOf下标属性来查询。
            function repArr(oldArr){
                var newArr = [];
                for(var i=0; i<oldArr.length; i++){
                    if(newArr.indexOf(oldArr[i]) == -1){
                        newArr.push(oldArr[i]);
                    }
                }

                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr)); 
方法八    思路:   利用数组原型对象上的 splice 方法。
            function repArr(oldArr){
                var i,
                    j,
                    len = oldArr.length;             
                for(i = 0; i < len; i++){
                    for(j = i + 1; j < len; j++){
                        if(oldArr[i] == oldArr[j]){
                            oldArr.splice(j,1);
                            len--;
                            j--;
                        }
                    }
                }

                return oldArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr));
方法九     利用数组原型对象上的 lastIndexOf 方法。
            function repArr(oldArr){
                var newArr = [];             
                for(var i=0; i<oldArr.length; i++){
                    newArr.lastIndexOf(oldArr[i]) !== -1 ? '' : newArr.push(oldArr[i]);
                }            
                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr));
数组的长度比较大的时候,不同方法的执行时间长短不同。
方法八的执行速度相对较慢。大家可以自己测试下。
var time3 = new Date().getTime();
  // 不同方法  
  ...
console.log('3所花时间: ' + (new Date().getTime() - time3));
原文:http://www.cnblogs.com/yuanbo88/p/7345331.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值