We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Soporte básico No No No1 No No No
FeatureAndroid webviewChrome para AndroidEdge mobileFirefox para AndroidOpera AndroidiOS SafariSamsung Internet
Soporte básico No No No No1 No No No

1. Available in Firefox Nightly only. See bug 1435813 for status on enabling this by default.

Ver también

Etiquetas y colaboradores del documento

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