Ce face Map.map
map cheamă funcția pentru fiecare pereche și folosește MapEntry-ul returnat ca pereche în rezultat. Poți schimba și cheile, și valorile, chiar și tipurile lor.
Spre deosebire de Iterable.map, rezultatul este imediat un Map nou, nu un iterable leneș. Map-ul inițial nu se schimbă.
Parametri
| Parametru | Descriere |
|---|---|
convert |
Funcția care primește cheia și valoarea și returnează un MapEntry nou. |
Ce returnează
Un Map<K2, V2> nou.
Exemple
Exemplul 1: Prețuri din lei în euro
void main() {
final lei = {'cafea': 12.0, 'croissant': 9.5};
final euro = lei.map((produs, pret) => MapEntry(produs, (pret / 4.97).toStringAsFixed(2)));
print(euro);
print(lei);
}
Rezultat
{cafea: 2.41, croissant: 1.91}
{cafea: 12.0, croissant: 9.5}
Exemplul 2: Inversarea cheilor cu valorile
void main() {
final coduri = {'IS': 'Iași', 'CJ': 'Cluj', 'BV': 'Brașov'};
final dupaOras = coduri.map((cod, oras) => MapEntry(oras, cod));
print(dupaOras);
print(dupaOras['Cluj']);
}
Rezultat
{Iași: IS, Cluj: CJ, Brașov: BV}
CJ
Greșeli frecvente
- Returnezi o valoare simplă în loc de
MapEntry:m.map((k, v) => v * 2). Funcția trebuie să returnezeMapEntry(k, v * 2); dacă schimbi doar valorile pe loc, foloseșteupdateAll. - La inversare, două chei au aceeași valoare. În rezultat rămâne doar ultima, pentru că cheile unui map sunt unice.
Comenzi înrudite
Iterable.map: Transformă fiecare element cu o funcție și returnează un iterable nou, leneș, cu rezultatele.MapEntry: O pereche cheie–valoare: ce primești din map.entries și ce returnezi din Map.map.Map.update: update schimbă valoarea unei chei pe baza valorii vechi; updateAll schimbă toate valorile din map.Map.fromEntries: Construiește un map dintr-o succesiune de perechi MapEntry, de exemplu entries filtrate sau sortate.