許多用以前方法去實現需要一大串代碼的,用ES6竟然幾句就搞定了。
Set對象是ES6中新增的類型,可以自動排除重復項,生成Set對象后,可以輕松遍歷它所包含的內容。
例如,遍歷字符串。
var str = new Set("Hello world!"); for(var str1 of str){ console.log(str1+" ") }
結果會是這樣:H e l o w r d !
為什么會是這樣,因為Set對象會自動排除重復項。
到了這里,我們可以很容易的想到使用Set對象進行數組去重,沒錯,通過該方法確實是挺方便的。
var arr = [12,23,45,34,56,56,87,23,45,12,89]; var arr1 = new Set(arr); var arr2 = []; for(var arr3 of arr1){ arr2.push(arr3) } console.log(arr2)
另一種數組去重法:
function foo(arr){
return Array.from(new Set(arr)) // Array.from
方法可以將 Set 結構轉為數組
}
const items = [1,2,3,4,5,6,7,1,2,1,3,1,2,3]
console.log(foo(items))
Set
函數接受數組作為參數,再使用Array.from將其轉換為數組,從而達到去重的目的
還有一種更簡潔的;
let arr1 = [12,13,23,45,46,48,78,79,45,12,13,23]; let arr = new Set(arr1) console.log([...arr]) // [ 12, 13, 23, 45, 46, 48, 78, 79 ]