Iterator.prototype.toArray / reduce / forEach / some / every / find în JavaScript

Iteratori ES2025

Metodele care consumă un iterator și returnează un rezultat: tablou, valoare cumulată, true/false sau elementul găsit.

Sintaxă
iterator.toArray()
iterator.reduce(functie, initial)
iterator.forEach(functie)
iterator.some(functie)
iterator.every(functie)
iterator.find(functie)

Ce face Iterator.prototype.toArray / reduce / forEach / some / every / find

Spre deosebire de map sau filter, aceste metode parcurg iteratorul și returnează un rezultat final. toArray adună valorile într-un tablou, reduce le combină într-o singură valoare, forEach rulează o funcție pentru fiecare.

some, every și find se opresc imediat ce știu răspunsul și închid iteratorul. După consumare, iteratorul este epuizat: o a doua parcurgere nu mai dă nimic.

Parametri

Parametru Descriere
functie Primește (valoare, indice); la reduce, (acumulator, valoare, indice).
initial Opțional, pentru reduce. Valoarea de pornire.

Ce returnează

Un tablou, o valoare, true/false sau elementul găsit (undefined dacă lipsește). forEach returnează undefined.

Exemple

Exemplul 1: Rezultate dintr-un Set

const preturi = new Set([12, 45, 8, 120]);

console.log(preturi.values().reduce((s, p) => s + p, 0));
console.log(preturi.values().some((p) => p > 100));
console.log(preturi.values().every((p) => p > 10));
console.log(preturi.values().find((p) => p > 40));
preturi.values().forEach((p, i) => console.log(i, p));

Rezultat

185
true
false
45
0 12
1 45
2 8
3 120

Exemplul 2: Un iterator se consumă o singură dată

const it = ["x", "y"].values();

console.log(it.toArray());
console.log(it.toArray());

Rezultat

[ 'x', 'y' ]
[]

Greșeli frecvente

  • Salvezi un iterator într-o variabilă și îl folosești de două ori. A doua oară este gol; salvează rezultatul lui toArray().

Comenzi înrudite

  • Iterator.prototype.map / filter / take / drop / flatMap: Transformă, filtrează și limitează valorile unui iterator „leneș”, fără să creeze tablouri intermediare.
  • reduce: Combină toate elementele unui tablou într-o singură valoare: o sumă, un obiect, un text.
  • Array.from: Creează un tablou nou din orice listă: text, Set, Map, NodeList sau un obiect cu length.