JavaScript Array flatMap()

The JavaScript Array flatMap() method first maps each element using a mapping function, then flattens it into a new array.

The syntax of the flatMap() method is:

arr.flatMap(callback(currentValue),thisArg)

Here, arr is an array.


flatMap() Parameters

The flatMap() method takes in:

  • callback - The function to initially execute on each array element. It takes in:
    • currentValue - The current element being passed from the array.
  • thisArg (optional) - Value to use as this when executing callback.

Return value from flatMap()

  • Returns a new array after mapping every element using callback and flattening it to a depth of 1.

Notes:

  • The flatMap() method does not change the original array.
  • The flatMap() method is equivalent to array.map().flat().

Example: Using flatMap() method

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 ]

Output

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

Recommended Reading: JavaScript Array flat()