在 ES7 中,Array 类型新增了两个方法:flat
和 flatMap
。这两个方法可以帮助我们更快捷、简单和有效地处理嵌套数组和扁平化数组。
flat
flat
方法可以将多维数组“扁平化”,即把所有的嵌套数组变成一个一维数组。它的语法如下:
let newArray = arr.flat([depth])
其中,arr
可以是任何数组,depth
(可选)指定要扁平化的嵌套层数。默认值为 1。
示例代码如下:
const arr = [1, 2, [3, 4]]; const flatArr = arr.flat(); // [1, 2, 3, 4]
当我们需要打平一个多维数组时,可以传递一个 depth 参数指定要扁平化的嵌套层数,示例代码如下:
const arr = [1, 2, [3, [4, 5]]]; const flatArr = arr.flat(2); // [1, 2, 3, 4, 5]
flatMap
flatMap
方法和 map
方法类似,不同的是它会先将数组项映射到一个新的数组中,然后将映射后的结果打平成一个新的数组。它的语法如下:
let newArray = arr.flatMap(callback(currentValue[, index[, array]])[, thisArg])
其中,arr
是原数组,callback
是对原数组所有元素执行的函数,它的返回值是一个新的数组,thisArg
是执行 callback 函数时的 this
值,可以省略。
示例代码如下:
const arr = [1, 2, 3]; const flatMapArr = arr.flatMap(x => [x * 2]); // [2, 4, 6]
如果 callback
函数返回的是一个数组,那么 flatMap
方法会将这个数组打平之后,将其作为返回值添加到新的数组中,示例代码如下:
const arr = [1, 2, 3]; const flatMapArr = arr.flatMap(x => [[x * 2]]); // [[2], [4], [6]]
总结
在处理多维数组时,flat
和 flatMap
方法可以让我们更方便地处理数组,提高我们的开发效率。flat
方法可以将多维数组“扁平化”,而 flatMap
方法可以将映射后的结果打平并添加到一个新的数组中。
需要注意的是,这两个方法在使用时需要慎重考虑嵌套层数和返回值的类型,以免出现不符合预期的结果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6479e48b968c7c53b05cea40