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.