数组去重

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