Uma introdução aos iteradores e geradores em JavaScript

Desde 2015, EcmaScript6 (ES6) trouxe muitos avanços nas práticas de codificação JavaScript. Vários conceitos modernos foram introduzidos no JavaScript, melhorando muito a experiência de codificação. Neste artigo, você aprenderá sobre iteradores e geradores em JavaScript.

Iteradores e geradores são dois conceitos diferentes, mas são usados ​​de maneiras semelhantes. Eles são usados ​​para iterar por meio de matrizes e objetos em JavaScript.

Iteradores

Os iteradores são como loops avançados que podem ser pausados. Os iteradores consistem na função next () , que retorna o valor e o status concluído. O campo de valor é o valor na matriz em um determinado índice. done é o valor booleano que retorna o status de conclusão da iteração por meio do loop.

Aqui está um exemplo que demonstra como os iteradores:

 function fruitIter(fruits){
let index = 0;
return {
next: function(){
return index < fruits.length ? { value: fruits[index++], done: false } : {done: true}
}
}
}
const fruitsArray = ["Mango", "Banana", "Grapes"];
const fruits = fruitIter(fruitsArray);
console.log(fruits.next().value);

Produto :

 Manga

Quando você passa o array fruitsArray no método fruitIter () , ele retorna um iterador armazenado na variável fruits . A variável de índice no método fruitIter () é inicializada em 0. Este método retorna a função next () que ajuda no loop através do array . A função next () verifica se o índice é menor que o comprimento de fruitsArray . Nesse caso, ele retorna duas variáveis: o nome da fruta nesse índice e o status de concluído . Ao retornar esses valores, ele também incrementa o valor do índice.

Para verificar como esse método funciona e imprimir o nome da fruta, você precisa chamar a função next () no iterador de frutas e obter acesso ao seu valor.

Relacionado: O que é uma função na programação?

Geradores

Os geradores são semelhantes aos iteradores, mas retornam vários valores. Esses valores são chamados de valores de rendimento. As funções do gerador são escritas usando a sintaxe function * . * denota que não é uma função normal, mas um gerador. Aqui está um exemplo de geradores:

 function* printFruits(){
yield "Mango";
yield "Banana";
yield "Grapes";
}
const fruit = printFruits();
console.log(fruit.next());

Produto :

 {valor: 'Manga', feito: falso}

Neste exemplo, o rendimento é o iterador. Quando você chama a função printFruits () e imprime fruit.next () , ele fornece um objeto de onde você obtém o valor. O status concluído denota se todos os valores foram iterados.

Aprenda estruturas de dados usando classes ES6 em JavaScript

JavaScript ES6 trouxe muitos avanços nas práticas de codificação. Não menos importante, é construir estruturas de dados usando classes ES6. Empurre. pop, e empilhe seu caminho até o topo e torne-se um profissional de JavaScript!