数组黑科技(偏性能方面)未完待更新...

数组去重最优解:
  Array.prototype.unique = function () {
    var tmp = new Map();
    return this.filter(item => {
      return !tmp.has(item) && tmp.set(item,
        1);
    })
  }

  

搭配使用
Array.from('foo'); 
// ["f", "o", "o"]

let s = new Set(['foo', window]); 
Array.from(s); 
// ["foo", window]

let m = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(m); 
// [[1, 2], [2, 4], [4, 8]]

Array.from([1, 2, 3], x => x + x);      
// [2, 4, 6]

去重
function combine(){ 
    let arr = [].concat.apply([], arguments);  //没有去重复的新数组 
    return Array.from(new Set(arr));
} 

var m = [1, 2, 2], n = [2,3,3]; 
console.log(combine(m,n));  

 

 

如果只谈性能,显然是 for > forEach > map,为什么 for 的性能比较好?读一下 forEach 和 map 的规范就知道了。map 会返回一个等长数组,forEach 不会,所以 forEach 大于 map。

但是哪个快和应该使用哪个,并不应该划等号。
如果你需要将数组按照某种规则映射为另一个数组,就应该用 map。
如果你需要进行简单的遍历,用 forEach 或者 for of。
如果你需要对迭代器进行遍历,用 for of.
如果你需要过滤出符合条件的项,用 filter.
如果你需要先按照规则映射为新数组,再根据条件过滤,那就用一个 map 加一个 filter。
posted @ 2018-05-22 17:38  霜末之冬  阅读(159)  评论(0编辑  收藏  举报