--- title: Array.prototype.flatMap() slug: Web/JavaScript/Referencia/Objetos_globales/Array/flatMap tags: - Array - JavaScript - Prototipo - Referencia - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap ---
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.
\{{EmbedInteractiveExample("pages/js/array-flatmap.html")}}
La fuente de este ejemplo interactivo, se almacena en un repositorio de GitHub. Si desea contribuir al proyecto de ejemplos interactivos, clone https://github.com/mdn/interactive-examples y envíenos una solicitud de extracción.
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) { // return element for new_array }[, thisArg])
callback
currentValue
index
{{optional_inline}}array
{{optional_inline}}map
fue llamada.thisArg
{{optional_inline}}this
al ejecutar callback
.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.
Ver {{jsxref("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.
map
y flatMap
var arr1 = x => [x * 2] // [[2], [4], [6], [8]] arr1.flatMap(x => [x * 2] // solo un nivel es aplanado arr1.flatMap(x => [[x * 2]]); // [[2], [4], [6], [8]]
reduce
y concat
var arr1 = arr1.flatMap(x => [x * 2] // es equivalente a arr1.reduce((acc, x) => acc.concat([x * 2]
Este polyfill necesita Array.prototype.flat polyfill
if (!Array.prototype.flatMap) { Array.prototype.flatMap = function() { return Array.prototype.map.apply(this, arguments).flat(1); }; }
Especificación | Estado | Comentario |
---|---|---|
Array.prototype.flatMap |
Finalizado (4) |
{{Compat("javascript.builtins.Array.flatMap")}}