Oi Pedro!
Tem algumas coisas faltando no seu código, vamos lá:
Primeiro, no módulo menorValor.js
:
- na linha 6, a variável contadora
atual
não inicia no 0
e sim com o valor da variável posicaoInicial
(que é recebida por parâmetro) - na linha 7, para o
if
funcionar precisamos passar qual é a propriedade do objeto que queremos comparar. No caso é preco
, então o correto seria if (arrProdutos[atual].preco < arrProdutos[maisBarato].preco)
.
A função fica dessa forma:
function menorValor(arrProdutos, posicaoInicial) {
let maisBarato = posicaoInicial;
for (let atual = posicaoInicial; atual < arrProdutos.length; atual++) {
if (arrProdutos[atual].preco < arrProdutos[maisBarato].preco) {
maisBarato = atual
}
}
return maisBarato;
}
Em seguida, no módulo selectionSort.js
, ficou faltando passar para o for
um ajuste na condição de parada (linha 4): o correto é for (let atual = 0; atual < livros.length - 1; atual++)
(veja que tem um -1
, ou seja, o comprimento do array - 1, o índice do último elemento). A função fica da seguinte forma:
for (let atual = 0; atual < livros.length - 1; atual++) {
let menor = menorValor(livros, atual)
let livroAtual = livros[atual];
let livroMenorPreco = livros[menor];
livros[atual] = livroMenorPreco
livros[menor] = livroAtual
}
Como não tenho o restante do seu código, não tenho como tentar reproduzir aqui e nem como ver a stack de erros, mas você pode tentar fazer essas correções e executar novamente.
Espero ter ajudado!
Bons estudos ;)