ES6陣列去重的最佳實踐:Set結合Array.from() | 拓展運算子結合 Set
前言
ES5及之前大多都是用遍歷和演算法來實現陣列去重,在ES6有一個更為簡便的方式。ES6之Set,Array.from, ...
實踐
1. Set + Array.from()
這裡使用的是Set的一個特性,集合中不會包含重複項。結合Array.from()實現陣列去重 ,看圖
從圖中看出,經過轉化的陣列是可以正常陣列操作的。那麼多賦值可以精簡為兩條程式碼或走一條;
var set1 = Array.from(new Set([1,1,2,2,33,'33',44,'44'
]))
//Array.from是個好東東,抽空再寫詳細點的文章
//可以把類陣列物件(array-like obj)和可迭代物件(iterable objects -- eg:Map or Set)轉為常規陣列。。。
2. …[拓展運算子] + Set
/**
* ...拓展運算子,是遍歷Symbol.iterator
* 和for...of一樣的遍歷方法
*/
var tt = [...new Set([5,5,6,6,8,])] // 5,6,8
總結
一直想寫個ES6特性的系列文章,整理了一段時間,不想寫概而全的純理論,只想寫一些貼近工作的,
最常用到的,比如塊級作用域,箭頭函式,字串模板等等---敬請期待
上面那兩個方法並不是萬能的,只能作為常規的陣列去重,因為涉及到物件或者多維陣列的去重,
還是需要其他一些方法來輔助,該遍歷遍歷,該比較還是得比較。。。。