Esta es una tecnología experimental
Comprueba la Tabla de compabilidad de navegadores cuidadosamente antes de usarla en producción.

El método flatMap() primero mapea cada elemento usando una función de mapeo, luego aplana el resultado en una nueva matriz. Es idéntico a un map seguido de un flatten de profundidad 1, pero flatMap es a menudo útil y la fusión de ambos en un método es ligeramente más eficiente.

Sintaxis

var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
    // return element for new_array
}[, thisArg])

Parámetros

callback
Función que produce un elemento de la nueva matriz, tomando tres argumentos:
 
currentValue
El elemento actual que se procesa en la matriz.
indexOptional
El índice del elemento actual que se procesa en la matriz.
arrayOptional
La matriz map fue llamada.
thisArgOptional
Valor para usar como this al ejecutar callback.

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

Ver Array.prototype.map() para una descripción detallada de la función de devolución de llamada. El método flatMap es idéntico a map seguido de una llamada a flatten de profundidad 1.

Ejemplos

map y flatMap

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 aplanado
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Alternativa

reduce y concat

var arr1 = [1, 2, 3, 4];

arr1.flatMap(x => [x * 2]);
// es equivalente a
arr1.reduce((acc, x) => acc.concat([x * 2]), []);
// [2, 4, 6, 8]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Especificaciones

Especificación Estado Comentario
Array.prototype.flatMap proposal Borrador  

Compatibilidad con navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Soporte básico
Experimental
Chrome Soporte completo 69Edge Sin soporte NoFirefox Soporte completo 62IE Sin soporte NoOpera Soporte completo 56Safari Soporte completo 12WebView Android Soporte completo 69Chrome Android Soporte completo 69Edge Mobile Sin soporte NoFirefox Android Soporte completo 62Opera Android Soporte completo 56Safari iOS Soporte completo 12Samsung Internet Android Sin soporte Nonodejs Sin soporte No

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
Experimental. Esperar que el comportamiento cambie en el futuro.
Experimental. Esperar que el comportamiento cambie en el futuro.

Ver también

Etiquetas y colaboradores del documento

Colaboradores en esta página: lajaso
Última actualización por: lajaso,