数组去重的六种方法与扩展

方法一:

            function unique11(arr){
                arr.sort(function(a,b){return a-b;});
                var result=[];
                for(var i=0;i<arr.length;i++){
                    if(arr[i+1]!==arr[i]){
                        result.push(arr[i]);;
                    }
                }
                return result;
            }
            console.log(unique11([1,2,2,2,12,3,4,5]));
            function unique12(arr){
                return arr.concat().sort().filter(function(value, index, array) {
                    return !index || value != array[index - 1];
                });
            }
            console.log(unique12([1,2,2,2,12,3,4,5]));          

方法二:

            function unique21(arr){//更快一点
                var  result=[];
                for(var i=0;i<arr.length;i++){
                    if(result.indexOf(arr[i])===-1){
                        result.push(arr[i]);
                    }
                }
                return result;
            }
            console.log(unique21([1,2,2,2,12,3,4,5]));
            function unique22(arr){//更快一点
                var  result=[];
                for(var i=0;i<arr.length;i++){
                    (result.indexOf(arr[i])===-1)&&result.push(arr[i]);
                }
                return result;
            }
            console.log(unique22([1,2,2,2,12,3,4,5]));

方法三:

            function unique31(arr){
                var obj={},result=[];
                for(var i=0;i<arr.length;i++){
                    if(!obj[arr[i]]){
                        result.push(arr[i]);
                        obj[arr[i]]=true;
                    }
                }
                return result;
            }
            console.log(unique31([1,2,2,2,12,3,4,5]));
            function unique32(arr){
                var obj={};
                return arr.filter(function(key) {
                    return obj.hasOwnProperty(key) ? false : (obj[key] = true);
                });
            }
            console.log(unique32([1,2,2,2,12,3,4,5]));

方法四:

            function unique41(arr){
                var result=[];
                for(var i=0;i<arr.length;i++){
                    if(arr.indexOf(arr[i])===i){
                        result.push(arr[i]);
                    }
                }
                return result;
            }
            console.log(unique41([1,2,2,2,12,3,4,5]));
            function unique42(arr){
                var  result=[];
                result=arr.filter(function(value,index,array){
                    return array.indexOf(value)===index;
                })
                return result;
            }
            console.log(unique42([1,2,2,2,12,3,4,5]));

方法五:

            function unique5(arr){//优化的遍历数组,推荐的方法,获取没重复的最右一值放入新数组。
                var result = [];
                var len = arr.length;
                for(var i = 0; i < len; i++) {
                    for(var j = i + 1; j < len; j++){
                        if (arr[i] === arr[j]){
                            j=++i;//i=i+1;j=i; 找到最近的那个后面再没有相同的值的元素插进去
                        }
                    }
                    result.push(arr[i]);
                }
                return result;
            }
            console.log(unique5([1,2,2,2,12,3,4,5]));

方法六:

            function unique61(arr){
                return [...(new Set(arr))];
            }
            console.log(unique61([1,2,2,2,12,3,4,5]));

            function unique62(arr){
                return Array.from(new Set(arr));
            }
            console.log(unique62([1,2,2,2,12,3,4,5]));
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值