ECMAScript 2019 中的 Array.prototype.flatMap() 方法实例教程

阅读时长 4 分钟读完

介绍

在 ECMAScript 2019 中,新增了一个方法 Array.prototype.flatMap(),以便更方便地处理嵌套数组。其作用类似于 Array.prototype.map() 和 Array.prototype.flat() 方法的组合。

用法

该方法用于将一个嵌套数组的各个子元素映射到一个新数组,并将所有结果平铺到一个新数组中。语法为:

其中,callback 函数将接受三个参数:

  1. 当前元素的值。
  2. 当前元素的索引。
  3. 包含原数组的对象本身。

该方法的返回值是一个新的扁平化的数组。

以下是一些使用示例代码。

示例 1

在这个例子中,我们首先定义了一个包含嵌套数组的数组 arr,它包含 3 个子数组,每个子数组各包含 2 个整数。我们想要将所有数字都乘以 2 并形成一个新数组。这可以通过先使用另一个 map 回调函数对进行操作,然后使用 flatMap 方法平化结果,从而轻松实现。

示例 2

在这个例子中,我们首先定义了一个包含两个字符串的数组 arr,我们想要将每个字符串中的每个字母提取出来,形成一个新的数组。这可以通过使用另一个 map 回调函数将每个字符串拆分为它们的字符数组,然后使用 flatMap 方法而不是 map 方法将所有字符平铺到一个大数组中,从而轻松实现。

注意事项

  • flatMap() 方法返回的新数组将不包含任何空数组。为了明确这个想法,请考虑 flatten 的原理——我们只删除被嵌套的空数组。因此,如果回调函数返回一个空数组,则该空数组将不包括在返回的新数组中。

在这个例子中,我们首先定义了一个数组 arr,它包含两个单个整数和四个数组元素,其中有一个空数组。在我们的回调函数中,我们没有显式地从空数组返回任何,因此它们不存在于最终的扁平化的数组中。

  • 返回的新数组可能会包含 undefined。这取决于您提供的回调函数。如果该函数的某个调用返回 undefined,则将在新数组中出现 undefined 值。

在这个例子中,我们首先定义了一个包含两个数组的数组 arr,它们各包含 2 个整数。我们的回调函数将检查每个数字是否可以被 2 整除。如果可以,我们将返回一个包含该数字的新数组。如果不能,这个函数将返回 undefined。这就解释了为什么在扁平化的结果中有两个 undefined。

结论

Array.prototype.flatMap() 是 ECMAScript 2019 中的一个新方法,使使用嵌套数组变得更加容易。它使用一个回调函数来将每个子元素映射到一个新数组,然后平铺所有结果到一个新数组中。需要注意的是,返回的新数组将不包含任何空数组,但可能会包含 undefined。因此,在中大型项目中使用 flatMap() 方法时,我们需要小心回调函数以防止返回 undefined 值并确保最终的扁平化数组符合我们的期望。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676facbfe9a7045d0d7569f2

纠错
反馈