跳到主要内容

JavaScript 数组 flat() 方法

flat() 方法通过将嵌套数组展平至指定深度来创建一个新数组。

示例

// 3层嵌套数组
let numbers = [1, 2, [3, 4, [5, 6, [7, 8]]]];

// 通过展平数组至深度2来减少嵌套
let flattenArray = numbers.flat(2);

// 新的展平数组
console.log(flattenArray);

// 输出:
// [ 1, 2, 3, 4, 5, 6, [ 7, 8 ] ]

flat() 语法

flat() 方法的语法为:

arr.flat(depth);

这里的 arr 是一个数组。

flat() 参数

flat() 方法接受 单个 参数:

  • depth - 指定应该展平嵌套数组的深度的整数。默认值为 1

flat() 返回值

  • 返回一个展平的数组,子数组元素被合并进来。

备注flat() 方法:

  • 不改变原始数组。
  • 在数组中移除空位。

示例 1:使用 flat() 方法

// 3层嵌套数组
let numbers = [1, 2, [3, 4, [5, 6, [7, 8]]]];

// 通过展平数组至深度2来减少嵌套
let flattenArray = numbers.flat(2);

// 新的展平数组
console.log(flattenArray);

输出

[ 1, 2, 3, 4, 5, 6, [ 7, 8 ] ]

在上述示例中,我们使用了 flat() 方法将嵌套数组 numbers 展平至深度 2

numbers.flat(2) 减少了 numbers 数组的嵌套,并返回一个只有一层嵌套的展平数组,即 [ 1, 2, 3, 4, 5, 6, [ 7, 8 ] ]

示例 2:未指定默认深度参数的 flat()

// 嵌套数组
let array1 = [1, [2, 3, 4], 5];

// 在 flat() 中未传递任何深度参数
let flattenArray = array1.flat();

console.log(flattenArray);

输出

[ 1, 2, 3, 4, 5 ]

在这里,我们没有在 flat() 方法中传递任何深度参数。

默认深度参数为 1,因此 array1.flat() 将 array1 展平至深度 1

示例 3:flat() 方法移除数组中的空位

我们可以使用 flat() 方法移除具有空位的数组中的空位。例如:

// 带有空位的数组
let array_with_holes = [1, , 3];

// 移除数组中的空位
let flattedArray = array_with_holes.flat();

console.log(flattedArray); // [ 1, 3 ]

输出

[ 1, 3 ]

推荐阅读: JavaScript 数组 flatMap()