Map: forEach / keys / values / entries în JavaScript

Map și Set ES2015 (ES6)

Parcurge un Map în ordinea de inserare: perechi, doar chei sau doar valori.

Sintaxă
map.forEach((valoare, cheie) => { ... })
map.keys()
map.values()
map.entries()

Ce face Map: forEach / keys / values / entries

Un Map se parcurge direct cu for...of, care dă perechi [cheie, valoare], la fel ca entries(). keys() și values() returnează iteratori doar cu chei, respectiv doar cu valori.

forEach apelează funcția cu (valoare, cheie, map): atenție, valoarea vine prima. Pentru un tablou, desface iteratorul cu [...map.keys()] sau folosește Array.from.

Ce returnează

keys, values, entries: iteratori. forEach: undefined.

Exemple

Exemplul 1: Patru moduri de parcurgere

const capitale = new Map([["România", "București"], ["Franța", "Paris"]]);

for (const [tara, capitala] of capitale) console.log(tara, "->", capitala);
capitale.forEach((capitala, tara) => console.log(`${capitala} (${tara})`));
console.log([...capitale.keys()]);
console.log([...capitale.values()]);
console.log(capitale.entries().next().value);

Rezultat

România -> București
Franța -> Paris
București (România)
Paris (Franța)
[ 'România', 'Franța' ]
[ 'București', 'Paris' ]
[ 'România', 'București' ]

Exemplul 2: Sortarea unui Map după valori

const scoruri = new Map([["Ana", 82], ["Dan", 95], ["Ioana", 88]]);
const sortat = new Map([...scoruri.entries()].sort((a, b) => b[1] - a[1]));

console.log([...sortat.keys()]);

Rezultat

[ 'Dan', 'Ioana', 'Ana' ]

Greșeli frecvente

  • Scrii map.forEach((cheie, valoare) => ...), cu parametrii inversați. Ordinea este (valoare, cheie).
  • Apelezi map.keys().map(...) pe un mediu vechi, fără metode de iterator. Transformă întâi în tablou: [...map.keys()].map(...).

Comenzi înrudite