數組去重方法1:用es6的set和 ... 擴展運算符es6
let arr = [1,2,3,4,4,5,2];
console.log([...new Set(arr)]) // [1, 2, 3, 4, 5]
ES6 提供了新的數據結構 Set。它相似於數組,可是成員的值都是惟一的,沒有重複的值。數組
Set 自己是一個構造函數,用來生成 Set 數據結構。數據結構
const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4
擴展運算符(spread)是三個點(...
)。它比如 rest 參數的逆運算,將一個數組轉爲用逗號分隔的參數序列。函數
console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...document.querySelectorAll('div')] // [<div>, <div>, <div>]
=======================================================================spa
數組去重方法2:用es6的set和數組擴展Array.fromrest
let arr = [1,2,3,4,4,5,2];
console.log(Array.from(new Set(arr))) //[1, 2, 3, 4, 5]
Array.from
方法用於將兩類對象轉爲真正的數組:相似數組的對象(array-like object)和可遍歷(iterable)的對象(包括 ES6 新增的數據結構 Set 和 Map)。code
下面是一個相似數組的對象,Array.from
將它轉爲真正的數組。對象
let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; // ES5的寫法 var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES6的寫法 let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']