Array.prototype.flatMap în JavaScript

Aplică o funcție fiecărui element și aplatizează rezultatul cu un nivel; ca map urmat de flat.

Sintaxă
tablou.flatMap((element, indice) => valoareSauTablou)

Ce face Array.prototype.flatMap

flatMap este echivalent cu map(...).flat(), dar mai rapid. Funcția poate returna un tablou cu oricâte elemente: un tablou gol elimină elementul, un tablou cu mai multe valori îl „multiplică”.

Aplatizarea se face doar cu un nivel.

Parametri

Parametru Descriere
functie Primește (element, indice, tablou) și returnează o valoare sau un tablou.

Ce returnează

Un tablou nou.

Exemple

Exemplul 1: Cuvintele din mai multe propoziții

const propozitii = ["Bună ziua", "Ce mai faci azi"];

console.log(propozitii.map((p) => p.split(" ")));
console.log(propozitii.flatMap((p) => p.split(" ")));

Rezultat

[ [ 'Bună', 'ziua' ], [ 'Ce', 'mai', 'faci', 'azi' ] ]
[ 'Bună', 'ziua', 'Ce', 'mai', 'faci', 'azi' ]

Exemplul 2: Filtrare și transformare într-un singur pas

const intrari = ["12", "abc", "7", "", "30"];

console.log(intrari.flatMap((x) => (x !== "" && !Number.isNaN(Number(x)) ? [Number(x)] : [])));

Rezultat

[ 12, 7, 30 ]

Greșeli frecvente

  • Te aștepți să aplatizeze mai multe niveluri. flatMap coboară doar unul; pentru mai multe folosește map urmat de flat(n).

Comenzi înrudite

  • Array.prototype.flat: Aplatizează un tablou care conține alte tablouri, până la adâncimea dorită.
  • map: Creează un tablou nou, transformând fiecare element cu o funcție.
  • filter: Creează un tablou nou doar cu elementele care îndeplinesc o condiție.