1. 程式人生 > 程式設計 >es6陣列的flat(),flatMap()函式用法例項分析

es6陣列的flat(),flatMap()函式用法例項分析

本文例項講述了es6陣列的flat(),flatMap()函式用法。分享給大家供大家參考,具體如下:

陣列的成員有時還是陣列,Array.prototype.flat()用於將巢狀的陣列“拉平”,變成一維陣列。該方法返回一個新陣列,對原資料沒有影響。

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

上面程式碼中,原陣列的成員裡面有一個數組,flat()方法將子陣列的成員取出來,新增在原來的位置。

flat()預設只會“拉平”一層,如果想要“拉平”多層的巢狀陣列,可以將flat()方法的引數寫成一個整數,表示想要拉平的層數,預設為1。

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

上面程式碼中,flat()的引數為2,表示要拉平兩層的巢狀陣列。

如果不管有多少層巢狀,都要轉成一維陣列,可以用Infinity關鍵字作為引數。

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

如果原陣列有空位,flat()方法會跳過空位。

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

flatMap()方法對原陣列的每個成員執行一個函式,相當於執行Array.prototype.map(),然後對返回值組成的陣列執行flat()方法。該方法返回一個新陣列,不改變原陣列。

// 相當於 [[2,4],6],8]].flat()
[2,4].flatMap((x) => [x,x * 2])
// [2,6,8]

flatMap()只能展開一層陣列。

感興趣的朋友可以使用線上HTML/CSS/JavaScript程式碼執行工具:http://tools.jb51.net/code/HtmlJsRun測試上述程式碼執行效果。

更多關於JavaScript相關內容可檢視本站專題:《javascript面向物件入門教程》、《JavaScript錯誤與除錯技巧總結》、《JavaScript資料結構與演算法技巧總結》、《JavaScript遍歷演算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程式設計有所幫助。