ES6之數組的flat(),flatMap()

數組的成員還是數組時,Array.prototype.flat()用於將嵌套的數組“拉平”,編程一維數組。該方法返回一個新的數組,對原數據沒有影響。

[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]

flat()默認只會“拉平”一層,如果想要“拉平”多層的嵌套數組,可以將flat()方法的參數寫成一個整數,表示想要拉平的層數,默認爲1.

[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

如果不管有多少層嵌套,都要轉成一維數組,可以用Infinity關鍵字作爲參數

[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]

如果原數組有空位,flat()方法會跳過空位

[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]

flatMap()只能展開一層數組

[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]

js中Map和flatMap的區別

var a = [1,2,3]
var b = [3,4]
a.map(a => (b.map(o => [a,o])))
// [ [[1,3],[1,4]], [[2,3],[2,4]], [[3,3],[3,4]] ]

a.flatMap(a => (b.map(o => [a,o])))
// [ [1,3],[1,4],[2,3],[2,4],[3,3],[3,4] ]

區別就是flatMap少嵌套一層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章