Repetições
De novo!
Digamos que você tem uma lista de preços e quer descobrir o total dela. Como faria?
let precos = [24.99, 9.99, 11.99, 69.90]
Talvez assim:
let precos = [24.99, 9.99, 11.99, 69.90]
console.log(precos[0] + precos[1] + precos[2] + precos[3])
> 116.87
Funcionou. Mas o que acontece se você decidir que quer comprar mais alguma coisa?
let precos = [24.99, 9.99, 11.99, 69.90]
precos.push(8.50)
console.log(precos)
console.log(precos[0] + precos[1] + precos[2] + precos[3])
> [24.99, 9.99, 11.99, 69.9, 8.5]
> 116.87
Agora tem uma coisa a mais na lista, mas o resultado foi o mesmo. :(
É claro que dá para adaptar o código:
let precos = [24.99, 9.99, 11.99, 69.90]
precos.push(8.50)
console.log(precos[0] + precos[1] + precos[2] + precos[3] + precos[4])
> 125.37
Porém seria mais conveniente se existisse um pedaço de código que funcionasse sempre.
let precos = [24.99, 9.99, 11.99, 69.90, 8.50]
let total = 0
for (const valor of precos) {
total = total + valor
}
console.log(total)
> 125.37
Olha só, tem mesmo! Até parece que eu sabia que ele existia esse tempo todo.
Eu sei, tem muita coisa acontecendo aí. A parte essencial é essa:
for (const valor of precos) {
}
for
e of
são mais 2 palavras especiais.
Usando esse código, qualquer instrução entre as {chaves} (ou seja, no bloco de código) é repetida uma vez por item na lista.
let letras = ["a", "b", "c"]
for (const valor of letras) {
// 3 vezes
console.log("De novo!")
}
> "De novo!"
> "De novo!"
> "De novo!"
Esse const valor
é algo que você já viu: esse código cria uma variável chamada valor.
Cada vez que o código interior executa, a variável criada contém um item da lista, em ordem. Você pode escolher o nome dela.
let sequencia = [0, 1, 2, 3]
for (const numero of sequencia) {
console.log(numero)
}
> 0
> 1
> 2
> 3
Você também já viu que total = total + valor
soma o valor à variável total. Como esse pedaço do código está entre as chaves, ele executa com a lista toda, somando toda a lista no total.
Veja uma versão um pouco diferente que mostra o total sendo calculado:
let precos = [24.99, 9.99, 11.99, 69.90, 8.50]
let total = 0
for (const valor of precos) {
total = total + valor
console.log(total)
}
> 24.99
> 34.98
> 46.97
> 116.87
> 125.37
E então, qual valor esse código mostra na tela?
let resultado = 100
for (const v of [40, 10, 10]) {
resultado = resultado - v
}
console.log(resultado)