Array.prototype.flatMap()
Baseline
Widely available
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.
Pruébalo
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]
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.
indexOpcional-
El índice del elemento actual que se procesa en la matriz.
arrayOpcional-
La matriz
mapfue llamada.
thisArgOpcional-
Valor para usar como
thisal ejecutarcallback.
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]
Polyfill
Este polyfill necesita Array.prototype.flat polyfill
if (!Array.prototype.flatMap) {
Array.prototype.flatMap = function () {
return Array.prototype.map.apply(this, arguments).flat(1);
};
}
Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.flatmap> |
Compatibilidad con navegadores
Loading…