Ce face Map (get, set, has, delete)
Map seamănă cu un obiect folosit ca dicționar, dar cheile pot fi orice: numere, obiecte, funcții. Ordinea de inserare este păstrată, iar numărul de elemente este în proprietatea size.
set adaugă sau înlocuiește o valoare și returnează Map-ul (deci apelurile se pot înlănțui), get o citește (undefined dacă lipsește), has verifică existența cheii, delete o șterge și returnează true dacă exista, iar clear golește colecția.
Folosește Map când cheile se adaugă și se șterg des sau nu sunt texte. Pentru date fixe, structurate (un utilizator, o setare), un obiect simplu rămâne mai potrivit.
Parametri
| Parametru | Descriere |
|---|---|
perechi |
Opțional, la creare: un iterabil cu perechi [cheie, valoare]. |
Ce returnează
Un obiect Map.
Exemple
Exemplul 1: Operațiile de bază
const stoc = new Map([["mere", 30]]);
stoc.set("pere", 12).set("prune", 0);
console.log(stoc.get("pere"), stoc.get("caise"));
console.log(stoc.has("prune"), stoc.size);
console.log(stoc.delete("prune"), stoc.delete("prune"));
console.log(stoc);
stoc.clear();
console.log(stoc.size);
Rezultat
12 undefined
true 3
true false
Map(2) { 'mere' => 30, 'pere' => 12 }
0
Exemplul 2: Chei care nu sunt texte
const ana = { nume: "Ana" };
const mihai = { nume: "Mihai" };
const vizite = new Map();
vizite.set(ana, 3).set(mihai, 1).set(1, "cheie numerică").set("1", "cheie text");
console.log(vizite.get(ana), vizite.get(1), vizite.get("1"));
const obiect = {};
obiect[ana] = 3;
obiect[mihai] = 1;
console.log(obiect);
Rezultat
3 cheie numerică cheie text
{ '[object Object]': 1 }
Exemplul 3: Numărarea cuvintelor
const text = "da nu da poate da nu";
const frecventa = new Map();
for (const cuvant of text.split(" ")) {
frecventa.set(cuvant, (frecventa.get(cuvant) ?? 0) + 1);
}
console.log([...frecventa]);
Rezultat
[ [ 'da', 3 ], [ 'nu', 2 ], [ 'poate', 1 ] ]
Greșeli frecvente
- Scrii
map["cheie"] = valoare. Creezi o proprietate obișnuită, pe careget,hasșisizenu o văd. Foloseșteset. - Transformi un Map în JSON direct:
JSON.stringify(map)dă"{}". Transformă-l întâi cuObject.fromEntries(map).
Comenzi înrudite
Map: forEach / keys / values / entries: Parcurge un Map în ordinea de inserare: perechi, doar chei sau doar valori.Set (add, has, delete): O colecție de valori unice: fiecare valoare apare o singură dată, în ordinea adăugării.Object.fromEntries: Construiește un obiect dintr-o listă de perechi [cheie, valoare]; inversul lui Object.entries.