Olá, Ellyda!
Pelo que percebi no código que você compartilhou, o erro que está ocorrendo é porque a função encontraMenores
está sendo chamada sem o segundo argumento necessário. No seu código, você chamou encontraMenores(listaLivros);
, mas a função espera dois parâmetros: um pivô e o array. O pivô é o livro de referência para comparar os preços, e o array é onde a busca será realizada.
Aqui está como você pode corrigir o erro:
Primeiro, você precisa identificar qual livro será o pivô. No contexto da aula, parece que o livro de Java com preço de R$30 é o pivô. Assumindo que este livro está na posição 2 do array, você deve passar esse livro como o primeiro argumento da função.
O segundo argumento deve ser o array completo listaLivros
.
Aqui está o trecho do código corrigido:
const listaLivros = require("./array.js");
function encontraMenores(pivo, array){
let menores = 0;
for (let atual = 0; atual < array.length; atual++) {
let produtoAtual = array[atual];
if (produtoAtual.preco < pivo.preco) {
menores++;
}
}
return menores;
}
// Assumindo que o livro de Java com preço de R$30 está na posição 2 do array
console.log(encontraMenores(listaLivros[2], listaLivros));
Com essa alteração, a função encontraMenores
deverá receber corretamente os dois argumentos necessários e o erro de TypeError: Cannot read properties of undefined (reading 'length')
deve ser resolvido, pois agora o array
não será mais undefined
.
Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!
Sucesso ✨
Um grande abraço e até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!