扁平化數組的問題延伸

原由

在掘金上看到100道前端面試題,其中有一道題是這樣的
有數組[11, 1, 3, 5 [4, 5], 2, [2, [44, 22, 1, [22, 13, 6]]]],將它變爲[1,2,3...],即扁平化數組並排序

解答

答案點贊排名第一的大佬的解答以下:
Array.from(new Set(arr.flat(Infinity))).sort((a, b) => {return a - b;});

解析

首先, Array.from不作贅述,參見ES6語法數組轉換
其次, new Set()set數據結構,由於其內值惟一的特性,能夠完成數組去重
再者,是Array.prototype.flat,mdn內描述很詳細,只是我沒有用過QAQ,其中還有用 reduce結合 concat實現 flat的例子,這裏也很少說了
最後,還有一個坑,是排序,這個我就忘了,由於默認的 sort是先將數組轉換字符串再比較的,這樣的數組排序則是按照code碼排序了,例如 [101, 1, 2].sort() = [1, 101, 2]

總結

深刻了解api的運做機制,靈活運用,不能總想本身造輪子和寫算法,能「懶」則「懶」~
相關文章
相關標籤/搜索