實用指南:如何在JavaScript中扁平化數組
ES2019在Array原型中引入了兩個新方法:flat和flatMap。它們對於我們想要的操作——將數組扁平化非常有用。
讓我們看看它們是如何工作的。
但首先,提醒一下:只有Firefox 62+、Chrome 69+、Edge 76+和Safari 12+已經支持這兩個方法,因為它們是比較新的。請查看當前瀏覽器支持情況,並記住,如果你需要支持較舊的瀏覽器,可以使用Babel將你的代碼回退到之前的ES版本。
如果你不想使用Babel,而且你還沒有構建步驟,你可以使用Lodash提供的flatten()、flattenDeep()和flattenDepth()函數,這可能更有意義。
Lodash的一個很酷的功能是你無需導入整個庫,你可以使用這些包來單獨使用這些函數:
lodash.flatten lodash.flattendeep lodash.flattendepth 下面是使用lodash.flatten扁平化數組的方法:
const flatten = require('lodash.flatten') const animals = ['Dog', ['Sheep', 'Wolf']] flatten(animals) //['Dog', 'Sheep', 'Wolf'] 現在讓我們來討論原生的flat()和flatMap() JavaScript方法。
flat()是一個新的數組實例方法,它可以從多維數組中創建一個一維數組。
例如:
['Dog', ['Sheep', 'Wolf']].flat() //[ 'Dog', 'Sheep', 'Wolf' ] 默認情況下,它只能“扁平化”一層。
你可以向flat()添加參數來設置要將數組扁平化到的層級。
將其設置為Infinity可以無限層級扁平化:
['Dog', ['Sheep', ['Wolf']]].flat() //[ 'Dog', 'Sheep', [ 'Wolf' ] ] ['Dog', ['Sheep', ['Wolf']]].flat(2) //[ 'Dog', 'Sheep', 'Wolf' ] ['Dog', ['Sheep', ['Wolf']]].flat(Infinity) //[ 'Dog', 'Sheep', 'Wolf' ] 如果你熟悉JavaScript數組的map()方法,你就知道可以使用它對數組的每個元素執行一個函數。...