Array.prototype.flatMap() 方法结合了 Array.prototype.map() 和 Array.prototype.flat() 两个方法的功能。
首先,Array.prototype.map() 方法对数组中的每个元素应用一个映射函数,并返回一个新的数组。例如,以下代码将数组 [1, 2, 3] 中的每个元素乘以 2,并返回一个新的数组 [2, 4, 6]:
codeconst arr = [1, 2, 3];
const mappedArr = arr.map(x => x * 2);
// mappedArr = [2, 4, 6]
接着,Array.prototype.flat() 方法将嵌套数组展平为一个新数组。例如,以下代码将嵌套数组 [[1, 2], [3, 4], [5, 6]] 展开为一个新数组 [1, 2, 3, 4, 5, 6]:
codeconst nestedArr = [[1, 2], [3, 4], [5, 6]];
const flatArr = nestedArr.flat();
// flatArr = [1, 2, 3, 4, 5, 6]
最后,Array.prototype.flatMap() 方法将这两个步骤组合在一起。它对数组中的每个元素应用一个映射函数,并将结果映射到一个新数组中。然后,它使用 Array.prototype.flat() 方法将这些新数组展平为一个新数组。
例如,以下代码将嵌套数组 [[1, 2], [3, 4], [5, 6]] 中的每个元素乘以 2,并将结果展平为一个新数组 [2, 4, 6, 8, 10, 12]:
codeconst nestedArr = [[1, 2], [3, 4], [5, 6]];
const flatMappedArr = nestedArr.flatMap(x => x.map(y => y * 2));
// flatMappedArr = [2, 4, 6, 8, 10, 12]
需要注意的是,Array.prototype.flatMap() 方法只会展平一层嵌套数组。如果需要展平多层嵌套数组,可以使用 Array.prototype.flat() 方法。