JavaScript Array flatMap()

flatMap() 方法首先使用映射函数对数组的每个元素进行映射,然后将其展平成一个新数组。

示例

// defining an array
let numbers = [1, 2, 3, 4, 5];

// each element of the array is squared and later flattened const resultingArray = numbers.flatMap((x) => [x ** 2]);
console.log(resultingArray); // Output: // [ 1, 4, 9, 16, 25 ]

flatMap() 语法

flatMap() 方法的语法是

arr.flatMap(callback(currentValue),thisArg)

这里,arr 是一个数组。


flatMap() 参数

flatMap() 方法可以接受 **两个** 参数

  • callback - 在数组的每个元素上初始执行的 回调函数。它接收
    • currentValue - 从数组中传递的当前元素。
  • thisArg (可选) - 执行 callback 时用作 this 的值。

flatMap() 返回值

  • 使用 callback 映射完每个元素后返回一个新数组

注意事项:

  • flatMap() 方法不会改变原始数组。
  • flatMap() 方法等同于 array.map().flat()

示例 1:使用 flatMap() 方法

// defining an array
let numbers = [1, 2, 3, 4, 5];

// each element of the array is incremented by 1 // and later the array is flattened let resultingArray = numbers.flatMap((element) => element + 1);
console.log(resultingArray);

输出

[ 2, 3, 4, 5, 6 ]

在上面的示例中,我们使用 flatMap() 方法将 numbers 数组的每个元素加 1

((element) => element + 1) 是一个映射函数,它在 numbers 的每个元素上执行。

该方法返回一个展平的数组:[ 2, 3, 4, 5, 6 ],即每个元素都加 1。


示例 2:使用 flat() 和 map() 代替 flatMap()

flatMap() 方法是 flat()map() 方法的组合。我们可以使用组合版本,即 flatMap(),而不是使用这两个方法。

// defining an array
let numbers = [1, 2, 3, 4, 5];

// incrementing each element of array using map() let afterMapping = numbers.map((element) => element + 2); // flattening the array using flat() let afterFlattening = afterMapping.flat();
console.log(afterFlattening); // [ 3, 4, 5, 6, 7 ]
// using flatMap() instead of flat() and map() let after_flatMap = numbers.flatMap((element) => element + 2);
console.log(after_flatMap); // [ 3, 4, 5, 6, 7 ]

输出

[ 3, 4, 5, 6, 7 ]
[ 3, 4, 5, 6, 7 ]

在这里,我们首先在 numbers 数组中分别使用了 map()flat() 方法。

然后我们使用了 flatMap() 方法,它首先 map() 数组,然后 flat()

在这两种情况下,该方法都返回相同的数组:[ 3, 4, 5, 6, 7 ]


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战