ES9 中的数组原型函数 flat() 和 flatMap()
在 ES9 中加入了两个非常有用的数组原型函数:flat() 和 flatMap()。这两个函数都是用来处理多维数组的,其实在使用中它们非常有用,因为在处理复杂数据结构时,数组是非常常用的数据类型。
flat() 函数的作用是将嵌套的数组结构变为一维数组,它可以将任意嵌套层次的数组变为一维数组,其语法如下:
array.flat(depth)
其中,array
是要操作的数组,depth
参数是一个整数,表示要展开的深度。默认值为 1,表示只展开一层数组,当然,你也可以传入 Infinity,表示要展开所有层次的数组。
示例代码如下:
let arr = [1, 2, [3, 4, [5, 6]]]; console.log(arr.flat()); // [1, 2, 3, 4, [5, 6]] console.log(arr.flat(2)); // [1, 2, 3, 4, 5, 6]
使用 flat() 函数,我们可以很方便地将多维数组转为一维数组,不再需要写复杂的递归代码了。
接下来是 flatMap() 函数,它通过将 map() 函数应用于每个元素,并将结果展平为一维数组来解决了一些常见的数组操作。
flatMap() 函数可以看作是 map() 函数和 flat() 函数的组合。其语法如下:
array.flatMap(callback)
其中,callback
函数可以接收三个参数,分别是 currentValue
,index
和 array
。currentValue
表示数组中正在处理的元素,index
表示当前元素的索引,array
表示正在处理的数组。
示例代码如下:
let arr = [1, 2, 3]; console.log(arr.flatMap(x => [x * 2])); // [2, 4, 6]
在这个例子中,我们将每个元素都乘以 2,然后将结果展开为一维数组。实际上,这个例子也可以使用 map() 函数和 flat() 函数来实现同样的操作,但是使用 flatMap() 函数可以使代码更简单且易读。
总结
ES9 中加入的这两个函数 flat() 和 flatMap(),是非常有用的数组原型函数,可以大大简化我们处理多维数组的代码,提高代码的可读性和可维护性。在实际应用中,我们可以根据实际情况选择使用这两个函数。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6531e6057d4982a6eb3ebfad