数组去重的方法

最近总结了一下数组去重的方法,当然有很多方法,这里列出了个人比较喜欢的三种方法供参考!!

//    第一种方法是利用对象的属性不叠加的性质,从而过滤掉数组中的重复元素。

var arr = [1,2,1,3,4,1,2,3,4,5,5,5,1,3,0,0,9,9,8,7,8,2,6];
        Array.prototype.DuplicateRemoval = function(){
            var arr = [],   //  新数组
                obj = {},   //  利用对象同一属性不叠加的原理,创建一个对象,进行数组过滤
                len = this.length;  //  当前调用的数组长度
            for (var i = 0;i < len; i++){   //  遍历
                if (!obj[this[i]]){ //  如果对象的值为undefined
                    obj[this[i]] = 'value'; //  给对象中的索引进行赋值
                    arr.push(this[i]);  //  推入当前调用的数组索引
                }
            }
            return arr; //  返回去重后的数组
        };
arr.DuplicateRemoval();  // 输出去重后的新数组

//    第二种方法利用数组的indexOf方法。

    function arrayDeweighting(array){
                var arr = [],
                    len = array.length;
                for (var i = 0;i < len;i++){
                    // 如果索引位置不一致
                    if (arr.indexOf(array[i]) == -1){
                        // 直接推入到新数组中
                        arr.push(array[i]);
                    }
                }
                return arr; //  返回去重后的数组
        };
        var arr2 = [1,1,2,2,0,0];
        arrayDeweighting(arr2);    //    输出去重后的数组

//    第三种方法是利用原数组进行循环,从而比较新数组和原数组的索引位。

function unique(array){ 
            var arr = [];
            for (var i = 0, len = array.length; i < len; i++){
                for (var j = i + 1; j < len; j++){
                    if (array[i] === array[j]){
                        j = ++i;
                    }
                }
                arr.push(array[i])
            }
            return arr; 
        }
        var uniques = [1, 2, 1, 2, 3, 3, 0, 0];
        unique(uniques);    //    返回去重后的数组
这里所有的方法都是乱序组成的,所以要想按从小到大进行排列的话,那么就必须调用数组的sort方法,

大家有没有更好的解决方案呢?欢迎进行评论!!!微笑微笑微笑



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值