JavaScript去掉数组中的重复元素详解编程语言

题目:去掉数组[4,3,”3″,3,5,7,5]中的重复元素,返回[4,3,”3″,5,7]

(function() { 
    'use strict'; 
    function filter1(arr) { 
        var b = []; 
        arr.forEach(function(i) { 
            if (b.indexOf(i) == -1) { 
                b.push(i); 
            } 
        }); 
        return b; 
    } 
 
    function filter2(arr) { 
        var b = {}, c = []; 
        arr.forEach(function(i) { 
            b[i] = b[i] ? b[i] : {}; 
            var type = typeof i; 
            if (!b[i][type]) { 
                b[i][type] = true; 
                c.push(i); 
            } 
        }); 
        return c; 
    } 
 
    function timer(fn, arr) { 
        console.time('filter'); 
        fn.call(this, arr); 
        console.timeEnd('filter'); 
    } 
 
    function testArr(n) { 
        // var arr = [4,3,"3",3,5,7,5]; 
        var arr = []; 
        for (var i = 0; i < n; i++) { 
            arr.push(i); 
            arr.push(i + ""); 
        } 
        return arr; 
    } 
 
    for (var i = 1; i <= 100; i++) { 
        console.log(i * 10); 
        var arr = testArr(i * 10); 
        timer(filter1, arr); 
        timer(filter2, arr); 
    } 
})();

当数组长度短的时候,经常filter1的速度快于filter2(例如题目中的数组,彩用filter1相对比较快),当数组长度不断增长时,两种方式的差距就体现出来了。

有其它方法否?

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/8811.html

(0)
上一篇 2021年7月18日 22:21
下一篇 2021年7月18日 22:21

相关推荐

发表回复

登录后才能评论