Loops para listas - sabrinabm94/javascript GitHub Wiki

For

Método tradicional de loop, que te dá acesso a cada elemento, ao contador do loop e controle de cada operação.

const fruits = ['Apple', 'Banana', 'Cherry'];
for (let i = 0; i < fruits.length; i++) {
  console.log(`Fruit ${i}: ${fruits[i]}`);
}
// Fruit 0: Apple, Fruit 1: Banana, Fruit 2: Cherry

While

O loop while é excelente quando a duração do loop depende de uma condição diferente do comprimento do array. Ele continua funcionando enquanto a condição for verdadeira. É útil quando a condição de encerramento é dinâmica e pode mudar durante a execução do loop.

const fruits = ['Apple', 'Banana', 'Cherry'];
let i = 0;
while (i < fruits.length) {
  console.log(fruits[i]);
  i++;
}
// Apple, Banana, Cherry

É preciso cuidar com o loop infinido, que faz o while nunca ser quebrado e rodar infinitamente.

const i = 3;
while (i < 4) {
  console.log("Loop infinido rodando...");
}
// Loop infinido rodando..

ForEach

O método forEach do JavaScript é uma ferramenta popular para iterar listas por deixar o código menor e legível. Ele executa uma função fornecida uma vez para cada elemento da lista. No entanto, diferentemente dos loops for ou while, o forEach foi projetado para executar a função para cada elemento, sem um mecanismo integrado para interromper ou parar o loop prematuramente.

const fruits = ["apple", "banana", "cherry"];

fruits.forEach(function(fruit) {
  console.log(fruit);
});

// apple banana cherry

Break

Uma limitação importante do forEach é a incapacidade de parar ou interromper o loop usando instruções de controle tradicionais como break ou return. Se você tentar usar break dentro de forEach, encontrará um erro de sintaxe porque break não é aplicável em uma função de retorno de chamada.

const numbers = [1, 2, 3, 4, 5];

numbers.forEach(number => {
  if (number > 3) {
    break; // Syntax Error: Illegal break statement
  }
  console.log(number);
});

Quando você tenta usar break em um loop forEach, o JavaScript gera um erro de sintaxe. Isso ocorre porque break foi projetado para ser usado em loops tradicionais (como for, while, do...while) e não é reconhecido na função de retorno de chamada de forEach.

for(let i = 10; i > 0; i--) {

if(i == 4) {
continue;

// Vai pular o 4, indo para o 3
}

if(i === 2) {
break;

// Vai parar o look aqui, sendo último valor impresso o 3
}

console.log(i);
}

Continue

É utilizado para pular uma instrução.


Return

Em outros loops ou funções, o return sai do loop ou função, retornando um valor, se especificado.

const numbers = [1, 2, 3, 4, 5];

numbers.forEach(number => {
  if (number === 3) {
    return; // Exits only the current iteration
  }
  console.log(number);
});

// 1 2 4 5

No contexto de forEach, return não sai do loop. Em vez disso, ele simplesmente sai da iteração atual da função de retorno de chamada e passa para o próximo elemento da matriz.

for...of

O loop for...of, introduzido no ES6 (ECMAScript 2015), oferece uma maneira moderna, limpa e legível de iterar sobre objetos iteráveis como listas, strings, maps, conjuntos e muito mais. Sua principal vantagem em comparação com forEach reside na compatibilidade com instruções de controle como break e continue, proporcionando maior flexibilidade no controle de loop. Ideal para situações que não se necessita trabalhar com o index.

Vantagens:

Flexibilidade: permite o uso de instruções break, continue e return. Legibilidade: Oferece sintaxe clara e concisa, tornando o código mais fácil de ler e entender. Versatilidade: Capaz de iterar em uma ampla variedade de objetos iteráveis, não apenas em listas.

const numbers = [1, 2, 3, 4, 5];

for (const number of numbers) {
  if (number > 3) {
    break; // Successfully breaks the loop
  }
  console.log(number);
}

// 1 2 3

Complemento

JavaScript Interview: Can You Stop or Break a forEach Loop? 🛑 9 Ways to Loop Arrays in JavaScript