[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap [Back]  [Original]

Array.prototype.flatMap() - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

Array.prototype.flatMap()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since enero de 2020.

El mtodo flatMap() primero mapea cada elemento usando una funcin de mapeo, luego aplana el resultado en una nueva matriz. Es idntico a un map seguido de un flattende profundidad 1, pero flatMap es a menudo til y la fusin de ambos en un mtodo es ligeramente ms eficiente.

In this article

Prubalo

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])

Parmetros

callback

Funcin 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 map fue llamada.

thisArgOpcional

Valor para usar como this al ejecutar callback.

Valor de retorno

Una nueva matriz con cada elemento es el resultado de la funcin de devolucin de llamada y se aplana a una profundidad de 1.

Descripcin

Ver Array.prototype.map() para una descripcin detallada de la funcin de devolucin de llamada. El mtodo flatMap es idntico a map seguido de una llamada a flatten de profundidad 1.

Ejemplos

map y flatMap

js
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

js
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

js
if (!Array.prototype.flatMap) {
  Array.prototype.flatMap = function () {
    return Array.prototype.map.apply(this, arguments).flat(1);
  };
}

Especificaciones

Specification
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.flatmap

Compatibilidad con navegadores

Ver tambin


Web Proxy Viewer  |  New URL  |  Original Page