--- title: Array.prototype.flatMap() slug: Web/JavaScript/Reference/Global_Objects/Array/flatMap tags: - Array - JavaScript - Prototipo - Referencia - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap original_slug: Web/JavaScript/Referencia/Objetos_globales/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])
callbackcurrentValueindex{{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 flatMapvar 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 concatvar 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")}}