码迷,mamicode.com
首页 > 编程语言 > 详细

数组去重的几种方式

时间:2017-05-23 01:20:06      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:重复   eof   方式   logs   属性   塌陷   obj   dex   pre   

一、利用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;

        }

    }

数组去重的几种方式

标签:重复   eof   方式   logs   属性   塌陷   obj   dex   pre   

原文地址:http://www.cnblogs.com/tblj/p/6892112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!