1
resposta

Declarei meu valor no array, porem esta retornando como indefinida

Array:

const Livros = [{ titulo: "JavaScript", valor: 10 }, { titulo: "Phyton", valor: 15 }, { titulo: "Php", valor: 20 }, { titulo: "Oi", valor: 25 }, { titulo: "Russia", valor: 50 }, { titulo: "Ucrania", valor: 55 }, { titulo: "China", valor: 60 }, { titulo: "frança", valor: 65 }, { titulo: "Noruega", valor: 70 }, ]

module.exports = { Livros };

Busca :

const listasLivros2 = require('./Livros');

function busca(array, de, ate, valorBuscado){ const meio = Math.floor((de + ate) / 2); const atual = array[meio];

if(valorBuscado === atual.valor){
    return meio;
}

if(valorBuscado > atual.valor){
    return busca(array, de, meio - 1, valorBuscado );

}

if(valorBuscado < atual.valor){
    return busca(array, meio + 1, ate, valorBuscado )

}

}

console.log(busca(listasLivros2, 0, listasLivros2.length - 1, 20));

1 resposta

Olá,

Eu não alhei o resto da tua lógica para ver se está certa ou não, mas o erro que vc está perguntando é porque, você exporta um Objeto e a tua função espera um Array:

Vc pode fazer assim:

const listasLivros2 = require('./Livros')

const [listaLivros] = [listasLivros2.Livros];     //   <<<<<------- Nessa linha que vc seta o array 

function busca(array, de, ate, valorBuscado) {

    const meio = Math.floor((de + ate) / 2); 
    console.log(meio);

    const atual = array[meio];

    if (valorBuscado === atual.valor) {
        return meio;
    }

    if (valorBuscado > atual.valor) {
        return busca(array, de, meio - 1, valorBuscado );
    }

    if (valorBuscado < atual.valor) {
        return busca(array, meio + 1, ate, valorBuscado )
    }
}

console.log(busca(listaLivros, 0, listaLivros.length - 1, 20));    // <<<<--- ai alterei aqui para usar o listaLivros