数组去重

本文介绍了三种JavaScript数组去重的方法:传统方式、map思想优化及使用indexOf进行优化。通过具体函数实现展示了每种方法的特点与效率提升。

ECMAScript5

1.传统的去重方式

function unique_normol(array) {
            var arr = [];
            arr.indexOf = function(argu){/*indexOf的实现*/
                for(var i = 0;i<this.length;i++){
                    if (this[i] == argu){
                        return i;
                    }
                }
                return -1;
            }
            for(var i = 0;i<array.length;i++){
                var item = array[i];
                if (arr.indexOf(item) == -1){/*遍历arr多遍*/
                    arr.push(item);
                }
            }
            return arr;
        };

2.利用键值对的方式,map思想

function unique_better(array){
            var arr = [];
            var map = {};
            for(var i=0;i<array.length;i++){/*不用遍历多遍结果数组arr*/
                if (!map[array[i]]){/*map中键值对,键值唯一*/
                    arr.push(array[i]);
                    map[array[i]] = true;
                }
            }
            return arr;
        };

3.优化的,indexOf

function unique_best(array) {
            var arr = [];
            arr[0] = array[0];/*从第二项开始遍历,省去一次遍历*/
            for(var i=1;i<array.length;i++){
                /*从位置1开始,如果值出现的第一次的位置与目前位置一致,则放入,否则是重复的信息*/
                if (array.indexOf(array[i]) == i){
                    arr.push(array[i]);
                }
            }
            return arr;
        }

参考:http://www.cnblogs.com/xfz1987/p/7591233.html

转载于:https://www.cnblogs.com/flora-dn/p/7593688.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值