JavaScript 数组 flat()

摘要:在本教程中,您将学习如何使用 JavaScript 数组 flat() 方法来扁平化数组。

JavaScript 数组 flat() 方法简介

ES2019 引入了 Array.prototype.flat() 方法,该方法创建一个新的 数组,其中包含所有子数组的元素,这些元素被递归地连接到该数组,直到指定的深度。

以下是 flat() 方法的语法

let newArray = arrayObject.flat([depth])Code language: JavaScript (javascript)

depth 参数指定方法扁平化数组结构的深度。默认值为 1。

以下示例展示了如何扁平化一个数字数组

const numbers = [1, 2, [3, 4, 5]];
const flatNumbers = numbers.flat();

console.log(flatNumbers);Code language: JavaScript (javascript)

输出

[1, 2, 3, 4, 5]Code language: JSON / JSON with Comments (json)

在这个例子中,我们没有将深度参数传递到 flat() 方法中,因此深度默认值为 1。flat() 方法将嵌套数组 [3,4,5] 中的所有元素连接到新数组的元素。

请注意,flat() 方法创建了一个新数组,不会改变原始数组

console.log(numbers);Code language: JavaScript (javascript)

输出

[ 1, 2, [ 3, 4, 5 ] ]Code language: JavaScript (javascript)

以下示例扁平化了一个具有两级深度的数组

const numbers = [1, 2, [3, 4, 5, [6, 7]]];
const flatNumbers = numbers.flat(2);

console.log(flatNumbers);Code language: JavaScript (javascript)

输出

[1, 2, 3, 4, 5, 6, 7]Code language: JavaScript (javascript)

当您不知道深度级别时,可以将 Infinity 传递到 flat() 方法中,以递归地将所有子数组的元素连接到新数组中

const numbers = [1, 2, [3, 4, 5, [6, 7, [8, 9]]]];
const flatNumbers = numbers.flat(Infinity);

console.log(flatNumbers);Code language: JavaScript (javascript)

如果数组包含空槽,可以使用 flat() 方法删除这些空槽,如下所示

const numbers = [1, 2, , 4, , 5];
const sequence = numbers.flat();

console.log(sequence);Code language: JavaScript (javascript)

输出

[ 1, 2, 4, 5 ]Code language: JavaScript (javascript)

摘要

  • 使用 Array.prototype.flat() 方法来扁平化包含嵌套数组的数组。
  • 使用 depth 参数指定应该扁平化嵌套数组的深度。深度默认值为 1。
  • flat() 还会删除包含空槽的数组中的空槽。
本教程是否有帮助?