Map.removeWhere în Dart

Șterge din map toate perechile pentru care funcția de test returnează true.

Sintaxă
void removeWhere(bool test(K key, V value))

Ce face Map.removeWhere

removeWhere cheamă funcția pentru fiecare pereche, cu cheia și valoarea, și șterge perechile pentru care rezultatul este true. Modifică map-ul pe loc.

Este modul sigur de a șterge mai multe perechi deodată: nu ai problema ștergerii în timpul unei bucle for.

Parametri

Parametru Descriere
test Funcția care primește cheia și valoarea și decide dacă perechea se șterge.

Ce returnează

Nimic (void); map-ul se modifică direct.

Exemple

Exemplul 1: Elimină produsele epuizate

void main() {
  final stoc = {'mere': 40, 'pere': 0, 'prune': 12, 'gutui': 0};
  stoc.removeWhere((produs, bucati) => bucati == 0);
  print(stoc);
}

Rezultat

{mere: 40, prune: 12}

Exemplul 2: Test pe cheie

void main() {
  final setari = {'tema': 'întunecată', '_temp': 'x', 'limba': 'ro', '_debug': 'da'};
  setari.removeWhere((cheie, _) => cheie.startsWith('_'));
  print(setari);
}

Rezultat

{tema: întunecată, limba: ro}

Greșeli frecvente

  • Te aștepți ca removeWhere să returneze un map nou. Returnează void și schimbă map-ul existent. Pentru o copie filtrată scrie Map.fromEntries(m.entries.where(...)).

Comenzi înrudite

  • Map.remove: remove scoate o cheie din map și returnează valoarea ei (sau null); clear golește tot map-ul.
  • List.removeWhere: removeWhere șterge toate elementele care trec testul; retainWhere le păstrează doar pe ele.
  • Map.fromEntries: Construiește un map dintr-o succesiune de perechi MapEntry, de exemplu entries filtrate sau sortate.