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?
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?
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.