List.indexOf în Dart

List: liste Dart 2.0

Găsește poziția unui element (prima sau ultima apariție) sau a primului element care trece un test; -1 dacă nu există.

Sintaxă
int indexOf(E element, [int start = 0])
int lastIndexOf(E element, [int? start])
int indexWhere(bool test(E element), [int start = 0])

Ce face List.indexOf

indexOf returnează poziția primei apariții a valorii, căutând de la poziția start. lastIndexOf caută de la final spre început. Ambele returnează -1 când nu găsesc nimic.

indexWhere returnează poziția primului element pentru care testul este adevărat (sau -1). Există și lastIndexWhere. Folosește-le când ai nevoie de poziție; pentru elementul în sine este mai simplu firstWhere.

Parametri

Parametru Descriere
element Valoarea căutată (comparată cu ==).
test Pentru indexWhere: condiția căutată.
start Poziția de la care începe căutarea.

Ce returnează

Poziția găsită sau -1.

Exemple

Exemplul 1: Poziții în listă

void main() {
  final zile = ['luni', 'marți', 'luni', 'joi'];
  print(zile.indexOf('luni'));
  print(zile.lastIndexOf('luni'));
  print(zile.indexOf('luni', 1));
  print(zile.indexOf('duminică'));
}

Rezultat

0
2
2
-1

Exemplul 2: indexWhere și înlocuirea elementului găsit

void main() {
  final produse = [('lapte', 6.5), ('pâine', 4.0), ('cafea', 32.9)];
  final i = produse.indexWhere((p) => p.$1 == 'pâine');
  if (i != -1) {
    produse[i] = ('pâine', 4.5);
  }
  print(produse);
  print('primul peste 10 lei, la poziția ${produse.indexWhere((p) => p.$2 > 10)}');
}

Rezultat

[(lapte, 6.5), (pâine, 4.5), (cafea, 32.9)]
primul peste 10 lei, la poziția 2

Greșeli frecvente

  • Folosești rezultatul direct ca poziție, fără să verifici -1: lista[-1] aruncă RangeError.

Comenzi înrudite

  • Iterable.contains: Verifică dacă un element egal (==) cu valoarea dată există în colecție.
  • Iterable.firstWhere: Găsește primul, ultimul sau singurul element care trece un test, cu o valoare de rezervă opțională (orElse).
  • List.operator[]: lista[i] citește elementul de pe poziția i; lista[i] = x îl înlocuiește.