Processamento de repetição em JavaScript
Neste artigo, explicaremos o processamento de repetição em JavaScript.
YouTube Video
A instrução for
em JavaScript
Sintaxe Básica
1for (initialization; condition; update) {
2 // Code to repeat
3}
A instrução for
em JavaScript é uma sintaxe para realizar iterações. Ela executa repetidamente um bloco de código especificado enquanto uma determinada condição for atendida. Ao usar a instrução for
, o mesmo processo pode ser executado de maneira eficiente várias vezes.
- Inicialização (
initialization
): A parte que é executada apenas uma vez antes de começar o loop. Inicialize variáveis, como o contador do loop. - Condição (
condition
): A condição que determina se o loop deve continuar. Se fortrue
, o loop continua; se forfalse
, ele termina. - Atualização (
update
): Isso é executado no final de cada iteração do loop para atualizar o contador.
Exemplo
1for (let i = 0; i < 5; i++) {
2 console.log(i);
3}
Neste caso, i
começa em 0
, e o loop é executado enquanto i < 5
for true
. i++
incrementa i
em 1 a cada iteração do loop. Como resultado, os números de 0
a 4
são exibidos.
Escopo do contador de loop
Declare ou inicialize variáveis na parte de inicialização da instrução for
. As variáveis declaradas aqui são válidas apenas dentro do loop.
1for (let i = 0; i < 3; i++) {
2 console.log(i); // Outputs 0, 1, 2
3}
4console.log(i); // ReferenceError
- Como mostrado neste exemplo, referenciar uma variável fora da instrução
for
resultará em um erro.
Loop infinito
Definir uma condição que não termina o loop resulta em um loop infinito. Isso pode sobrecarregar o navegador ou o sistema, então é preciso cautela.
1for (;;) {
2 console.log("Infinite loop");
3 break; // Exits the infinite loop with break
4}
Arrays e a instrução for
É comum usar a instrução for
em conjunto com arrays. É conveniente para processar cada elemento de um array.
Exemplo
1let fruits = ["apple", "banana", "cherry"];
2
3for (let i = 0; i < fruits.length; i++) {
4 console.log(fruits[i]);
5}
6// Outputs "apple", "banana", "cherry"
Dessa forma, é possível processar cada elemento de um array usando índices.
Outras Estruturas de Loop
Declaração for...of
A declaração for...of
é usada para objetos iteráveis como arrays e strings.
1let fruits = ["apple", "banana", "cherry"];
2
3for (let fruit of fruits) {
4 console.log(fruit);
5}
6// Outputs "apple", "banana", "cherry"
Isso permite processar cada elemento sem usar índices.
Declaração for...in
A declaração for...in
é usada para iterar sobre as propriedades de um objeto.
1let person = { name: "John", age: 30, city: "Tokyo" };
2
3for (let key in person) {
4 console.log(key + ": " + person[key]);
5}
6// Outputs "name: John", "age: 30", "city: Tokyo"
Dessa forma, é possível realizar operações em cada elemento usando as chaves.
Resumo
- A declaração
for
é uma estrutura de loop com três partes: inicialização, condição e atualização. - É possível controlar o comportamento dos loops usando
break
oucontinue
. - Quando combinada com arrays ou objetos, os elementos ou propriedades podem ser processados de forma eficiente.
A Declaração while
no JavaScript
Sintaxe Básica
1while (condition) {
2 // Code that repeats while the condition is true
3}
A declaração while
no JavaScript é uma estrutura de loop que executa operações repetidas enquanto a condição especificada for true
. Semelhante à declaração for
, a declaração while
apenas especifica a condição.
- Condição: Escreva a expressão condicional que determina se o loop deve continuar. O loop continua enquanto for
true
e termina quando se tornarfalse
.
Exemplo
1let i = 0;
2
3while (i < 5) {
4 console.log(i);
5 i++;
6}
7console.log(i); // 5
Neste exemplo, o loop começa com a variável i
em 0
e executa enquanto i < 5
for true
. A cada iteração do loop, i
é incrementado em 1 e, quando i
se torna 5
, a condição torna-se false
e o loop termina. Como resultado, a declaração while
exibe de 0
a 4
.
Diferentemente da declaração for
, na declaração while
, a inicialização e a atualização de variáveis são escritas como declarações separadas. É possível também acessar a variável após a declaração while
. Neste caso, 5
é exibido após o término da declaração while
.
Loop infinito
Se a condição for sempre true
, ocorre um loop infinito que não termina. Loops infinitos devem ser evitados, mas, se usados intencionalmente, é possível encerrá-los com uma declaração break
.
Exemplo
1while (true) {
2 console.log("Infinite loop");
3 break; // Ends the loop with `break`
4}
Processando Arrays com um Loop while
Também é possível processar arrays com uma instrução while
.
Exemplo
1let fruits = ["apple", "banana", "cherry"];
2let i = 0;
3
4while (i < fruits.length) {
5 console.log(fruits[i]);
6 i++;
7}
8// Outputs "apple", "banana", "cherry"
Instrução do...while
Sintaxe Básica
1do {
2 // Code that is executed at least once
3} while (condition);
A instrução do...while
, uma variante da instrução while
, verifica a condição após executar o loop pelo menos uma vez. Enquanto a instrução while
verifica a condição primeiro, a instrução do...while
executa o processo uma vez antes de verificar a condição.
Exemplo
1let i = 0;
2
3do {
4 console.log(i);
5 i++;
6} while (i < 5);
Neste exemplo, i
é exibido de 0
a 4
. A instrução do...while
difere da instrução while
, pois sempre é executada uma vez, mesmo que a condição seja false
.
Resumo
- A instrução
while
é usada para executar o código repetidamente enquanto a condição fortrue
. - Tenha cuidado com loops infinitos, mas você pode controlar o fluxo de loops usando
break
econtinue
. - A instrução
do...while
é útil quando você deseja executar o loop pelo menos uma vez.
break
e continue
Você pode usar break
e continue
dentro do loop.
break
é usado para terminar o loop prematuramente.continue
pula a iteração atual e avança para a próxima iteração.
Exemplo de break
1for (let i = 0; i < 10; i++) {
2 if (i === 5) {
3 break; // Exits the loop when i is 5
4 }
5 console.log(i);
6}
7// Outputs 0, 1, 2, 3, 4
8
9let i = 0;
10
11while (i < 10) {
12 if (i === 5) {
13 break; // Ends the loop when i is 5
14 }
15 console.log(i++);
16}
17// Outputs 0, 1, 2, 3, 4
Neste caso, break
é executado quando i
se torna 5. Como resultado, os números de 0
a 4
são exibidos.
Exemplo de continue
1for (let i = 0; i < 5; i++) {
2 if (i === 2) {
3 continue; // Skips when i is 2
4 }
5 console.log(i);
6}
7// Outputs 0, 1, 3, 4
8
9let i = 0;
10while (i < 5) {
11 i++;
12 if (i === 3) {
13 continue; // Skips when i is 3
14 }
15 console.log(i);
16}
17// Outputs 1, 2, 4, 5
Neste caso, continue
é executado quando i
é 2
. Como resultado, números diferentes de 2
são exibidos.
Loops Aninhados em JavaScript
Na programação JavaScript, um loop aninhado é uma estrutura onde um loop existe dentro de outro. Esses loops são muito eficazes quando algoritmos ou processos específicos abrangem várias dimensões ou camadas. Por exemplo, processar um array multidimensional com arrays dentro de arrays é um caso típico.
Aqui, explicaremos a estrutura básica dos loops aninhados, exemplos de uso, precauções e considerações de otimização.
Estrutura Básica dos Loops Aninhados
A estrutura básica de um loop aninhado é uma forma onde um ou mais loops estão contidos dentro de outro loop. Toda vez que o loop externo é executado uma vez, o loop interno é executado esse mesmo número de vezes.
Abaixo está um exemplo básico de dois loops aninhados.
1for (let i = 0; i < 3; i++) {
2 console.log(`Outer loop iteration: ${i}`);
3
4 for (let j = 0; j < 2; j++) {
5 console.log(` Inner loop iteration: ${j}`);
6 }
7}
8// Output:
9// Outer loop iteration: 0
10// Inner loop iteration: 0
11// Inner loop iteration: 1
12// Outer loop iteration: 1
13// Inner loop iteration: 0
14// Inner loop iteration: 1
15// Outer loop iteration: 2
16// Inner loop iteration: 0
17// Inner loop iteration: 1
No código acima, i
é contado no loop externo, e j
é contado no loop interno. Toda vez que o loop externo é executado uma vez, o loop interno é executado duas vezes.
Exemplo Prático de Loops Aninhados
Loops aninhados são particularmente úteis para lidar com arrays multidimensionais. Por exemplo, ao processar um array bidimensional, é necessário lidar tanto com as linhas (loop externo) quanto com as colunas (loop interno).
No exemplo a seguir, lidamos com um array bidimensional e imprimimos cada elemento.
1const matrix = [
2 [1, 2, 3],
3 [4, 5, 6],
4 [7, 8, 9]
5];
6
7for (let row = 0; row < matrix.length; row++) {
8 for (let col = 0; col < matrix[row].length; col++) {
9 console.log(`Element at [${row}][${col}] is: ${matrix[row][col]}`);
10 }
11}
12// Output:
13// Element at [0][0] is: 1
14// Element at [0][1] is: 2
15// Element at [0][2] is: 3
16// Element at [1][0] is: 4
17// Element at [1][1] is: 5
18// Element at [1][2] is: 6
19// Element at [2][0] is: 7
20// Element at [2][1] is: 8
21// Element at [2][2] is: 9
Dessa forma, usar loops aninhados permite acessar cada elemento de um array bidimensional.
Notas
Há alguns pontos a serem observados ao usar loops aninhados.
-
Problemas de Desempenho
À medida que os loops aninhados se aprofundam, o tempo de execução aumenta drasticamente. Por exemplo, se o loop externo for executado 100 vezes e o loop interno 100 vezes, um total de 10.000 operações serão realizadas. Portanto, se houver muitas iterações de loops, você deve considerar a otimização dos loops para eficiência.
-
Aplicação a Algoritmos Complexos
Loops aninhados são muito poderosos, mas à medida que o processamento se torna complexo, o código pode ficar difícil de entender. Portanto, para manter a legibilidade do código, é importante organizar o processamento com comentários e funções apropriados.
Considerações de Otimização
Ao usar loops aninhados, as seguintes otimizações podem ser consideradas.
-
Término Antecipado do Loop
Se uma condição específica for atendida dentro do loop, você pode usar a instrução
break
para sair do loop. Isso pode evitar loops desnecessários e melhorar o desempenho.
1for (let i = 0; i < 5; i++) {
2 for (let j = 0; j < 5; j++) {
3 if (i + j > 5) {
4 break;
5 }
6 console.log(`i: ${i}, j: ${j}`);
7 }
8}
-
Mover Cálculos para Fora
Em vez de realizar o mesmo cálculo dentro do loop a cada vez, você pode realizá-lo uma vez fora do loop e usar o resultado para tornar o processo mais eficiente.
1let array = [1, 2, 3, 4, 5];
2
3// Inefficient example (calculating every time)
4for (let i = 0; i < array.length; i++) {
5 for (let j = 0; j < array.length; j++) {
6 let sum = array[i] + array[j];
7 console.log(sum);
8 }
9}
10
11// Efficient example (calculating outside)
12let arrayLength = array.length;
13for (let i = 0; i < arrayLength; i++) {
14 for (let j = 0; j < arrayLength; j++) {
15 let sum = array[i] + array[j];
16 console.log(sum);
17 }
18}
Resumo
Os loops aninhados são muito úteis para lidar com estruturas de dados complexas e algoritmos em JavaScript. No entanto, se não forem usados corretamente, podem causar degradação de desempenho e reduzir a legibilidade do código. Para usar loops aninhados de forma eficaz, é importante buscar a otimização dos loops e a organização do código, além de adotar abordagens apropriadas dependendo da situação.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.