AD

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.