Skip to main content

flat()

语法

flat(deep: number): [];

WARNING

该方法目前只在 Chrome 69+, Firefox 62+, Safari 12+ 可以使用,Node 8.x 未实现此方法。

描述

该方法用于展平一个数组,参数是嵌套数组的结构深度,默认值为 1。

示例

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

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

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

扩展

通过 reduce + concat 实现展平函数

reduce() 可以接受两个参数,第一个参数是回调函数,第二个参数是第一次调用回调函数时 acc 的初值,如果不传入此参数将会使用数组中的第一个元素。

单层展平方法。

const flatSingle = arr => arr.reduce((acc, val) => acc.concat(val), [])

多层展平,可使用递归。

const flattenDeep = arr =>
arr.reduce(
(acc, val) =>
Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val),
[],
)