1
resposta

TypeError: menorValor is not a fuction

Setei os três modulos de códigos de acordo com o que foi apresentado no vídeo pela Professora, porém quando quero dar um console log para verificar as entries dos dados, o sistema me retorna que uma das variáveis não está configurada como função, logo os parâmetros não rodam e o código quebra!

Verifiquei cada estapa anterior copiando LINHA POR LINHA da instrutora para garantir que toda a estrutura estivesse referênciada e coberta, porém continuo recebendo essa mensagem!

Abaixo seguem os prints dos arquivos:

Classe SELECT para organizar os livros:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Classe com função declarada:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Classe de ordenação:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Mensagem de erro retornada no terminal:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Fico à disposição! Desde já deixo meu muito obrigado!!!

1 resposta

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 ;)