HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
View in English Always switch to English
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é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 flattende profundidad 1, pero flatMap es a menudo útil y la fusión de ambos en un método es ligeramente más eficiente.
flatMap()
flatMap
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]
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) { // return element for new_array }[, thisArg])
callback
Función que produce un elemento de la nueva matriz, tomando tres argumentos:
currentValue
El elemento actual que se procesa en la matriz.
index
El índice del elemento actual que se procesa en la matriz.
array
La matriz map fue llamada.
map
thisArg
Valor para usar como this al ejecutar callback.
this
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 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.
Array.prototype.map()
flatten
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]
reduce
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]
Este polyfill necesita Array.prototype.flat polyfill
if (!Array.prototype.flatMap) { Array.prototype.flatMap = function () { return Array.prototype.map.apply(this, arguments).flat(1); }; }
Enable JavaScript to view this browser compatibility table.
Array.prototype.flatten()
Array.prototype.reduce()
Array.prototype.concat()