es6中數組的flat()和flatMap()


今天看到一道題,把一個嵌套的數組扁平化於是想到es6有這么一段操作

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

而且flat()默認只會“拉平”一層,如果要處理多層的嵌套數組,可以將flat()方法的參數寫成一個整數

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

如果是不管多少層嵌套,都要轉成一維數組,可以用Infinity關鍵字作為參數,如果有空位,flat()會跳過

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

flatMap()方法對原數組的每個成員執行一個函數,相當於執行Array.prototype.map(),然后對返回值組成的數組執行flat()方法。返回一個新數組,不改變原數組。flatMap()只能展開一層數組

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM