📜  JavaScript数组flatMap()(1)

📅  最后修改于: 2023-12-03 15:16:18.151000             🧑  作者: Mango

JavaScript数组flatMap()

在JavaScript中,数组是一个非常常见的数据结构。而flatMap()是一个在ES2019中新增的函数, 它可以将一个数组的每个元素都转化为一个新的数组,然后将所有新的子数组(或者他们的元素)合并为一个新的数组。

语法
arr.flatMap(callback(currentValue[, index[, array]])[, thisArg])

其中:

  • arr: 必需,要进行转换的数组;
  • callback: 必需,生成新数组的函数。它可以接收三个参数:
    • currentValue: 必需,当前处理的元素;
    • index(可选):当前元素在数组中的索引;
    • array(可选):调用map的数组;
  • thisArg: 可选,执行callback函数时的this值。
例子
const arr1 = [1, 2, 3, 4];
const arr2 = arr1.flatMap(x => [x * 2]);

console.log(arr2);
// Output: [2, 4, 6, 8]

const arr3 = [10, 11, 12];
const arr4 = arr1.flatMap(x => [x, x + 1], arr3);

console.log(arr4);
// Output: [1, 2, 2, 3, 3, 4, 4, 5, 10, 11, 12]

上面的例子中,我们可以看到:

  • 例子1: 数组arr1中的每个元素都乘以2,生成了一个新的子数组,然后所有子数组被合并到了一个新的数组arr2中。
  • 例子2: 在数组arr1基础上,每个元素后面加上它的后继,并且调用flatMap()时带上数组arr3做为this值,所以数组arr4中相应的元素是由arr3和arr1共同生成的。
注意事项
  • flatMap()函数是对原数组进行操作,不创建新数组,因此要注意不要修改原数组中的元素;
  • 在callback函数中返回的子数组可以为空数组,这时flatMap()会自动过滤掉它;
  • 如果callback返回的不是数组,会自动将其包装成一个只有一个元素的数组;
  • 支持链式调用,如array.flatMap().map()。

以上就是有关JavaScript数组flatMap()函数的介绍。使用flatMap()函数可以帮助我们更便捷、高效地操作数组,提高开发效率。