1
resposta

[Dúvida] Achei muito confuso

O exemplo seria para ajudar, mas deixou mais confuso. Alguém poderia explicar melhor? Por que o segundo exemplo utilizando "for...of" não funcionou? E como seria para ele funcionar?

1 resposta

Olá, Patrick.

Tudo bem?

A diferença entre os dois exemplos se dá na maneira como os laços de repetição for e for...of funcionam no JavaScript.

No primeiro exemplo, o laço for está usando um índice para percorrer o array e aplicar o desconto em cada elemento. A linha precos[i] = precos[i] * desconto; está, de fato, alterando o valor de cada elemento do array precos no índice correspondente ao valor de i.

Já no segundo exemplo, o laço for...of está percorrendo diretamente os valores do array. Quando você faz preco = preco * desconto;, você está apenas alterando a variável preco, e não o elemento do array precos. Por isso, o array original não é alterado.

Para que o segundo exemplo funcione da mesma forma que o primeiro, você precisaria usar o índice para acessar e alterar diretamente os elementos do array. O JavaScript fornece uma maneira de fazer isso com o laço for...in, que percorre os índices (ou chaves) de um objeto (ou array). Veja como ficaria:

const precos = [5.5, 6.2, 14, 19.5];
let desconto = 0.90;

for (let i in precos) {
 precos[i] = precos[i] * desconto;
}

console.log(precos);

Nesse caso, i é o índice de cada elemento no array precos, e você está modificando o valor de cada elemento diretamente, assim como no primeiro exemplo com o laço for.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software