在 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