Como a idéia era criar uma "ordenação" após seguir o passo a passo da instrutora, eu decidi por utilizar o método "sort()" para além de imprimir o valor mais barato, ele me mostrar a nova ordem:
const precoLivros = [25, 15, 30, 50, 45, 20];
let maisBarato = 0;
for (let atual = 0; atual < precoLivros.length; atual++) {
if (precoLivros[atual] < precoLivros[maisBarato]) {
maisBarato = atual;
}
console.log(`let atual: ${atual} / let maisBarato: ${maisBarato}`);
}
const livrosOrdenados = precoLivros.sort((a, b) => a - b);
console.log(`O livro mais barato custa: R$${precoLivros[maisBarato]}`);
console.log(livrosOrdenados);
Porém, ele me imprimiu o resultado de menor valor como sendo o "20" e não o "15". Para entender melhor o comportamento, eu coloquei(seguindo um exemplo de uma das respostas dada nesse tópico) um log pra poder verificar o comportamento do código e do jeito que esta escrito acima, o resultado imprimido foi:
" let atual: 0 / let maisBarato: 0 let atual: 1 / let maisBarato: 1 let atual: 2 / let maisBarato: 1 let atual: 3 / let maisBarato: 1 let atual: 4 / let maisBarato: 1 let atual: 5 / let maisBarato: 1 O livro mais barato custa: R$20 [ 15, 20, 25, 30, 45, 50 ] "
Quando eu jogo a "const livrosOrdenados" para a segunda linha no código assim:
const precoLivros = [25, 15, 30, 50, 45, 20];
const livrosOrdenados = precoLivros.sort((a, b) => a - b);
let maisBarato = 0;
for (let atual = 0; atual < precoLivros.length; atual++) {
if (precoLivros[atual] < precoLivros[maisBarato]) {
maisBarato = atual;
}
console.log(`let atual: ${atual} / let maisBarato: ${maisBarato}`);
}
console.log(`O livro mais barato custa: R$${precoLivros[maisBarato]}`);
console.log(livrosOrdenados);
Ele se comporta exatamente como deveria: " let atual: 0 / let maisBarato: 0 let atual: 1 / let maisBarato: 0 let atual: 2 / let maisBarato: 0 let atual: 3 / let maisBarato: 0 let atual: 4 / let maisBarato: 0 let atual: 5 / let maisBarato: 0 O livro mais barato custa: R$15 [ 15, 20, 25, 30, 45, 50 ] "
Mesmo entendendo um pouco que esse comportamento se dá a forma como o código lê a ordem das linhas, por que que no primeiro exemplo ele seguiu corretamente a lógica do for até chegar na const, mas a partir dela ele trocou o resultado?