ES10 中的 flat() 方法和 flatMap() 方法的理解与使用

在 ES10 中,新增了两个数组方法:flat()flatMap()。这两个方法都是用于处理多维数组的,可以将多维数组转换为一维数组或者处理多维数组中的每个元素。本文将详细介绍这两个方法的使用和实现。

flat() 方法

flat() 方法可以将多维数组转换为一维数组,其语法如下:

-------------------

其中,array 是要转换的多维数组,depth 是转换的深度,即要转换成几维数组,默认值为 1。

示例代码如下:

----- --- - --- -- --- -- --- -----
----- ------- - -----------
--------------------- -- --- -- -- -- --- ---

----- ------- - ------------
--------------------- -- --- -- -- -- -- --

在上面的示例代码中,arr 是一个多维数组,使用 flat() 方法将其转换为一维数组,flatArr 的值为 [1, 2, 3, 4, [5, 6]]。如果要将多维数组完全转换为一维数组,需要使用 flat(2) 方法,deepArr 的值为 [1, 2, 3, 4, 5, 6]

需要注意的是,flat() 方法只会将数组中的元素转换为一维数组,不会对数组中的空位或者 undefined 值进行处理。如果想要移除数组中的空位或者 undefined 值,可以使用 filter() 方法。

flatMap() 方法

flatMap() 方法是在 map() 方法的基础上进行的扩展,可以对多维数组中的每个元素进行处理,并将结果转换为一维数组。其语法如下:

------------------------------------- ------- ---------- ---------

其中,array 是要处理的多维数组,callback 是对每个元素进行处理的回调函数,thisArg 是回调函数中的 this 值,可选。

示例代码如下:

----- --- - --- -- ---
----- ---------- - ------------- -- --- - - ----
------------------------ -- --- -- -- -- -- --

在上面的示例代码中,arr 是一个一维数组,使用 flatMap() 方法对每个元素进行处理,将每个元素和它的两倍组成一个新的数组,最终得到的结果为 [1, 2, 2, 4, 3, 6]

需要注意的是,flatMap() 方法会自动调用一次 flat() 方法,将处理后的数组转换为一维数组。如果不想将处理后的数组转换为一维数组,可以使用 map() 方法代替。

总结

flat() 方法和 flatMap() 方法是用于处理多维数组的两个新方法。flat() 方法可以将多维数组转换为一维数组,flatMap() 方法可以对多维数组中的每个元素进行处理,并将结果转换为一维数组。需要注意的是,flat() 方法只会将数组中的元素转换为一维数组,不会对数组中的空位或者 undefined 值进行处理。flatMap() 方法会自动调用一次 flat() 方法,将处理后的数组转换为一维数组。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/663d71e0d3423812e4b78594