Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
Array.prototype.flatMap()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since enero de 2020.
El métodoflatMap() primero mapea cada elemento usando una función de mapeo, luego aplana el resultado en una nueva matriz. Es idéntico a unmap seguido de unflattende profundidad 1, peroflatMap es a menudo útil y la fusión de ambos en un método es ligeramente más eficiente.
In this article
Pruébalo
const arr1 = [1, 2, 1];const result = arr1.flatMap((num) => (num === 2 ? [2, 2] : 1));console.log(result);// Expected output: Array [1, 2, 2, 1]Sintaxis
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) { // return element for new_array}[, thisArg])Parámetros
callbackFunción que produce un elemento de la nueva matriz, tomando tres argumentos:
currentValueEl elemento actual que se procesa en la matriz.
indexOpcionalEl índice del elemento actual que se procesa en la matriz.
arrayOpcionalLa matriz
mapfue llamada.
thisArgOpcionalValor para usar como
thisal ejecutarcallback.
Valor de retorno
Una nueva matriz con cada elemento es el resultado de la función de devolución de llamada y se aplana a una profundidad de 1.
Descripción
VerArray.prototype.map() para una descripción detallada de la función de devolución de llamada. El métodoflatMap es idéntico amap seguido de una llamada aflatten de profundidad 1.
Ejemplos
>map yflatMap
var arr1 = [1, 2, 3, 4];arr1.map((x) => [x * 2]);// [[2], [4], [6], [8]]arr1.flatMap((x) => [x * 2]);// [2, 4, 6, 8]// solo un nivel es aplanadoarr1.flatMap((x) => [[x * 2]]);// [[2], [4], [6], [8]]//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
Alternativa
>reduce yconcat
var arr1 = [1, 2, 3, 4];arr1.flatMap((x) => [x * 2]);// es equivalente aarr1.reduce((acc, x) => acc.concat([x * 2]), []);// [2, 4, 6, 8]//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
Polyfill
Este polyfill necesitaArray.prototype.flat polyfill
if (!Array.prototype.flatMap) { Array.prototype.flatMap = function () { return Array.prototype.map.apply(this, arguments).flat(1); };}Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.flatmap> |