flatMap
撰写时间:2024-03-15
最新修订:2024-03-15
flatMap
先映射,再展平。原数组不受影响。
原型
*[]flatMap
- callbackcallbackFn
- *[]thisArg
参数
- callbackFn
-
回调函数。该回调函数接受3个参数。其原型如下:
* | undefinedcallbackFn- *element
- numberindex
- *[]array
- element
- 当前遍历到的数组元素。
- index
- 当前遍历到的数组索引值。
- array
- 调用flatMap方法的数组实例。
回调函数返回一个数值,以供flatMap方法将其生成为新数组的一个元素。如果回调函数没有显式地返回数值,则默认返回undefined。
- thisArg
- 调用flatMap方法的数组实例。可选。
返回值
返回一个先映射再展平后的新的数组。
说明
flatMap方法先映射数组元素,根据回调函数的返回值重新生成一个新的数组。之后,对该数组进行深度为1级的展平。最后,返回该新数组。
例子
基本用法
下面的代码将一个二维数组中的最里面的数组中的第1个元素取反后,将该二维数组展平为一维数组,最后返回展平后的新数组。
当调用arr的flatMap方法时,将先后经历两个步骤。
第一步是先映射。在映射过程中,回调函数中的参数arrElement仍是一个数组,此时的回调函数的返回值仍需返回一个数组。因此,我们仍需调用该数组的map方法来继续遍历它。而在第二级遍历的回调函数中,只对索引值为1的元素进行取反后再返回,而对其他元素则原样返回。
映射后的结果为:
接着才进行第二步的展平。flatMap方法只能进行1级深度的展平。展平后,最终结果将变为: