1. 程式人生 > >一行代碼實現數組去重(ES6)

一行代碼實現數組去重(ES6)

query 都是 add params log for reac arr UNC

  1. ES6中新增了Set數據結構,類似於數組,但是 它的成員都是唯一的 ,其構造函數可以接受一個數組作為參數,如:

     let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
     let set = new Set(array);
     console.log(set);
     // => Set {1, 2, 3, 4, 5}
    
  2. ES6中Array新增了一個靜態方法Array.from,可以把類似數組的對象轉換為數組,如通過querySelectAll方法得到HTML DOM Node List,以及ES6中新增的SetMap等可遍歷對象,如:

     let set = new Set();
     set.add(1).add(2).add(3);
     let array = Array.from(set);
     console.log(array);
     // => [1, 2, 3]
    

於是,現在我們可以用一行代碼實現數組去重了:

let array = Array.from(new Set([1, 1, 1, 2, 3, 2, 4]));
console.log(array);
// => [1, 2, 3, 4]

附:ES5實現數組去重

var array = [1, ‘1‘, 1, 2, 3, 2, 4];
var tmpObj = {};
var result = [];
array.forEach(function(a) {
  var key = (typeof a) + a;
  if (!tmpObj[key]) {
    tmpObj[key] = true;
    result.push(a);
  }
});
console.log(result);
// => [1, "1", 2, 3, 4]

一行代碼實現數組去重(ES6)