js去数组重复数据

代码

        function removeRepater(array) {
            array = array || [];
            var a = {};
            for (var i = 0; i < array.length; i++) {
                var v = array[i];
                if (a[v] == undefined) {
                    a[v] = 1;
                }
            }
            
            array.length = 0;
            for (var i in a) {
                array[array.length] = i;
            }

            return array;
        }

        var num = new Array();

        function createArray() {
            for (var i = 0; i < 1000000; i++) {
                num[i] = i;
            }
        }
        
        //创建测试数据
        console.profile("create");
        createArray();
        console.profileEnd("create");

        //去重复
        console.profile("cal");
        var n = removeRepater(num);
        console.profileEnd("cal");

100万条数据所用时间

分析

  1.构造一个哈希对象var a = {};如果a[v]为undefined,则说明该数不存在,把这个数字存为a的属性值,如果存在则不存。

  2.For in 中的i为数组的元素或对象的属性,因此可以据此获取a对象的属性(也就是不重复的数字)。

  3.console.profile("create")和console.profileEnd("create")可以用在火狐中,查看效率。

原文地址:https://www.cnblogs.com/xqhppt/p/2162484.html