| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
fefre
10年前发布

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相对比较快),当数组长度不断增长时,两种方式的差距就体现出来了。

有其它方法否?