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}
ES6中Array
新增了一個靜態方法Array.from
,可以把類似數組的對象轉換爲數組,如通過querySelectAll
方法得到HTML DOM Node List
,以及ES6中新增的Set
和Map
等可遍歷對象,如:
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]