Skip to content

flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。默认为1

javascript
const arr1 = [0, 1, 2, [3, 4]]
const arr2 = [0, 1, 2, [[[3, 4]]]]

console.log(arr1.flat()) // [ 0, 1, 2, 3, 4 ]
console.log(arr2.flat(2)) // [ 0, 1, 2, [ 3, 4 ] ]
console.log(arr2.flat(Infinity)) // [ 0, 1, 2, 3, 4 ]

更多参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。

javascript
const result = [1, 2, 3, 4]

console.log(result.map((x) => [x * 2])) // [ [ 2 ], [ 4 ], [ 6 ], [ 8 ] ]

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

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