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
Map (get, set, has, delete): O colecție de perechi cheie–valoare în care cheile pot fi de orice tip și ordinea este păstrată.for...of: Parcurge pe rând elementele unui tablou, ale unui șir sau ale altei colecții.Iterator.prototype.map / filter / take / drop / flatMap: Transformă, filtrează și limitează valorile unui iterator „leneș”, fără să creeze tablouri intermediare.