Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] semântica do if

Eu escrevi o código aqui e funcionou tranquiliamente. Porém me surgiu uma questão. No if, a variável mais barato, só iria receber o valor de atual, caso precosLivros[atual] fosse menor que precosLivros[maisBarato], correto? Mas acontece que desde o primeiro elemento do array, o preço atual nunca é menor que o preço mais barato, eles são iguais. no meu código troquei o <** por **<=

const preços = [30,20,45,50,35,15];

let maisBarato = 0;
    for(let atual = 0; atual < preços.length; atual++){
        if(preços[atual] <= preços[maisBarato]){
            maisBarato = atual
        }
    }

    console.log(preços[maisBarato])
3 respostas

Na verdade é o seguinte:

Você precisa deixar o < só e não <= porque quando o atual q é o index (Em qual posição da tabela está rodando o for) estiver na 1 o maisBarato vai estar na 0 no caso sempre vai estar uma posição a menos na tabela e ai a comparação com o < vai fazer sentido.

Espero ter conseguido esclarecer um pouco sua duvida.

Acho que compreendi. Tipo, na primeira iteração do for, o maisBarato não vai receber a posição de atual, porque não satisfaz a condição do if, porém na segunda iteração ele já recebe, correto? Acho que tinha me precipitado nisso, estava contando que a condição do if já seria estabelecida na primeira iteração.

solução!

Isso mesmo. O maisBarato só vai receber se o próximo ou algum item da Array for menor do que o atual e/ou o maisBarato.

Espero ter ajudado.