📜  JavaScript数组flatMap()

📅  最后修改于: 2020-09-27 05:43:40             🧑  作者: Mango

JavaScript Array flatMap()方法首先使用映射函数映射每个元素,然后将其展平为新数组。

flatMap()方法的语法为:

arr.flatMap(callback(currentValue),thisArg)

在这里, arr是一个数组。


flatMap()参数

flatMap()方法采用:

  • callback-最初在每个数组元素上执行的函数 。它包含:
    • currentValue-从数组传递的当前元素。
  • thisArg (可选)-执行callback时用作this值。

从flatMap()返回值
  • 在使用callback映射每个元素并将其展平为深度1之后,返回一个新数组。

注意事项

  • flatMap()方法不会更改原始数组。
  • flatMap()方法等效于array.map().flat()

示例:使用flatMap()方法
const arr1 = [1, 2, 3, 4, 5];

const newArr1 = arr1.flatMap((x) => [x ** 2]);
console.log(newArr1); // [ 1, 2, 3, 4, 5 ]

// can also be done as
const intermediate = arr1.map((x) => [x ** 2]);
console.log(intermediate); // [ [ 1 ], [ 4 ], [ 9 ], [ 16 ], [ 25 ] ]

const newArr2 = intermediate.flat();
console.log(newArr2); // [ 1, 4, 9, 16, 25 ]

const numbers = [1, 2, 3, 4, 5, 6, 7];

// remove odd and split even element to two half elements
function func(n) {
  if (n % 2 === 0) {
    return [n / 2, n / 2];
  } else {
    return [];
  }
}
const newArr3 = numbers.flatMap(func);
console.log(newArr3); // [ 1, 1, 2, 2, 3, 3 ]

输出

[ 1, 4, 9, 16, 25 ]
[ [ 1 ], [ 4 ], [ 9 ], [ 16 ], [ 25 ] ]
[ 1, 4, 9, 16, 25 ]
[ 1, 1, 2, 2, 3, 3 ]

推荐读物: JavaScript Array flat()