• 数组去重的几种方式


    一、利用indexOf查找,ie9以下不兼容

    function noRepeat(ary) {
        if (ary instanceof Array) {
            var newAry = [];
            for (var i = 0; i < ary.length; i++) {
                var cur = ary[i];
                if (newAry.indexOf(cur) === -1) {//indexOf IE9以下不兼容
                    newAry.push(cur)
                }
            }
            return newAry;
        }
    
    }

    二、利用对象属性名不能重复的方法。(不适合引号包裹的数字

    1.用了声明了一个新的数组和一个新的对象。

        function noRepeat(ary){
            if(ary instanceof Array){
                var newAry = [];
                var obj ={};
    //            不适合区分数组项是字符型的数字,例如:5与'5',
                for(var i = 0; i < ary.length; i++ ){
                    var cur = ary[i];
                    obj[cur] = cur;
                }
                //把对象的属性名放到新数组中
                for(var key in obj){
                    newAry.push(obj[key]);
                }
                return newAry;
            }
    
        }

    2.for in

        function noRepeat(ary) {
            if (ary instanceof Array) {
                var obj = {};
                for (var i = 0; i < ary.length; i++) {
                    var cur = ary[i];
                    obj[cur] = cur;/
                }
                //再用一个数组存储下
                var ary2 = [];
                for (var key in obj) {
                    ary2.push(obj[key])
                }
                return ary2;
    
            }
    
        }

    3.只声明一个对象方式,利用splice删除重复项

        function noRepeat(ary){
            if(ary instanceof Array){
                var obj = {};
                for(var i = 0; i < ary.length; ){
                    var cur = ary[i];
                    if(obj[cur] == cur){
                        ary.splice(i,1);
    //删除重复项后,i值不变但数组塌陷自定取到后面的一项。i<ary.length是动态计算的不会出错。
    
                    }else{
                        obj[cur] = cur;
                        i++;
                    }
    
                }
                return ary;
    
            }
    
        }
  • 相关阅读:
    CheckBox循环删除代码
    最小二乘法原理
    break_VS_continue
    check the sentence &ff
    check_return
    check_FunctionAddress
    while执行两次的问题,已经解决
    CalculationWithDifferenceTpye
    SaveAboutZero
    check_negation
  • 原文地址:https://www.cnblogs.com/tblj/p/6892112.html
Copyright © 2020-2023  润新知