在 ECMAScript 2019 中,JavaScript 新增了两个数组方法:flat
和 flatMap
。这两个方法都是用于处理嵌套数组的,而且它们都返回一个新的数组。本文将详细解析这两个方法的用法和特点,并提供一些示例代码以帮助读者更好地理解它们。
flat 方法
flat
方法用于将嵌套的数组“扁平化”,即将嵌套的数组展开为一个一维数组。它可以接受一个参数,表示要扁平化的层数,如果不传参数则默认为 1。如果传入的参数大于数组的嵌套层数,则会将数组完全扁平化。
以下是 flat
方法的语法:
array.flat([depth]);
array
表示要操作的数组,depth
表示要扁平化的层数,可选参数。
以下是一些示例:
// javascriptcn.com 代码示例 const arr1 = [1, 2, [3, 4]]; console.log(arr1.flat()); // [1, 2, 3, 4] const arr2 = [1, 2, [3, [4, 5]]]; console.log(arr2.flat()); // [1, 2, 3, [4, 5]] const arr3 = [1, 2, [3, [4, 5]]]; console.log(arr3.flat(2)); // [1, 2, 3, 4, 5] const arr4 = [1, 2, [3, [4, 5]]]; console.log(arr4.flat(3)); // [1, 2, 3, 4, 5]
可以看到,flat
方法将嵌套的数组展开为一维数组,同时也支持指定扁平化的层数。
flatMap 方法
flatMap
方法是在 map
方法的基础上进行的扩展,它先对数组中的每个元素执行一个 map
操作,然后将所有结果打平为一个新数组。与 map
方法不同的是,flatMap
方法返回的是一个一维数组,而不是一个嵌套的数组。
以下是 flatMap
方法的语法:
array.flatMap(callback);
array
表示要操作的数组,callback
表示对每个元素执行的函数,返回值必须是一个数组。
以下是一些示例:
const arr1 = [1, 2, 3]; console.log(arr1.flatMap(x => [x * 2])); // [2, 4, 6] const arr2 = ['Hello', 'World']; console.log(arr2.flatMap(x => x.split(''))); // ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']
可以看到,flatMap
方法先对数组中的每个元素执行一个 map
操作,然后将所有结果打平为一个新数组。注意,callback
函数必须返回一个数组,否则会抛出一个类型错误。
总结
flat
和 flatMap
方法是 ECMAScript 2019 中新增的数组方法,它们都是用于处理嵌套的数组。flat
方法用于将嵌套的数组“扁平化”,即将嵌套的数组展开为一个一维数组。flatMap
方法是在 map
方法的基础上进行的扩展,它先对数组中的每个元素执行一个 map
操作,然后将所有结果打平为一个新数组。这两个方法都可以提高处理嵌套数组的效率,同时也可以使代码更加简洁和易于理解。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657f6c23d2f5e1655da48559