Cosa sono e come funzionano gli iteratori in JavaScript
Gli iteratori sono una parte fondamentale di JavaScript, offrendo un modo efficace per attraversare e manipolare sequenze di dati. Questa pagina esplorerà gli iteratori in dettaglio, fornendo una guida completa e ricca di esempi per comprendere appieno il loro funzionamento.
Iteratore in JavaScript
In JavaScript, un iteratore è un oggetto che consente di iterare su una collezione di dati in modo efficiente e flessibile. In particolare implementa una specifica interfaccia che fornisce un metodo next(). Quest’ultimo restituisce un oggetto con due proprietà: value (il prossimo valore della sequenza) e done (un flag booleano che indica se la sequenza è stata completamente attraversata).
// Definire una sequenza di numeri
const numeri = [1, 2, 3];
// Creare un iteratore
const iteratore = numeri[Symbol.iterator]();
// Ottenere i valori
console.log(iteratore.next()); // { value: 1, done: false }
console.log(iteratore.next()); // { value: 2, done: false }
console.log(iteratore.next()); // { value: 3, done: false }
// ... e così via
console.log(iteratore.next()); // { value: undefined, done: true }
Oggetti iterabili in JavaScript
Un oggetto in JavaScript è considerato iterabile se ha un metodo [Symbol.iterator] che restituisce un oggetto iteratore. Fortunatamente, molte strutture dati native di JavaScript sono iterabili di default, come gli array.
const array = [10, 20, 30];
for (const elemento of array) {
console.log(elemento);
}
In questo caso, array è un iterabile, e l'operatore of semplifica notevolmente il processo di iterazione.
Iteratori personalizzati
È possibile creare iteratori personalizzati implementando la funzione [Symbol.iterator]() in un oggetto.
const mioIterabile = {
dati: ['a', 'b', 'c'],
[Symbol.iterator]() {
let indice = 0;
return {
next: () => {
if (indice < this.dati.length) {
return { value: this.dati[indice++], done: false };
} else {
return { value: undefined, done: true };
}
},
};
},
};
for (const elemento of mioIterabile) {
console.log(elemento);
}
Questo esempio mostra come creare un iterabile personalizzato che può essere utilizzato in un ciclo for...of.
Indice pagine di javascript
Indice javascript