Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Propriedade Undefined ao ler o array

Estou com um problema onde está dando erro no meu código, onde o valor .preco está dando undefined e não consigo identificar a solução..

Não está conseguindo ler o preço no array do exercício.

*E:\Alura\JavaScript - Para Backend\2360-algoritmos-js-II-arquivos-base\arquivos-base\aula-4\busca.js:9 if (valorBuscado === atual.preco) { ^

TypeError: Cannot read properties of undefined (reading 'preco')*

lista do array: `const listaLivros = [ { titulo: 'PHP', preco: 15 }, { titulo: 'Python', preco: 20 }, { titulo: 'Rust', preco: 22 }, { titulo: 'JavaScript', preco: 25 }, { titulo: 'Ruby', preco: 28 }, { titulo: 'Java', preco: 30 }, { titulo: 'C#', preco: 33 }, { titulo: 'C++', preco: 35 }, { titulo: 'Scala', preco: 40 }, { titulo: 'Go', preco: 45 }, { titulo: 'Elixir', preco: 50 } ]

module.exports = listaLivros`

const listaLivros = require("./arrayOrdenado");

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

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

    if (valorBuscado > atual.preco) {
        //vai ser usado recursao para fatiar o array
        return busca(array, de, meio - 1, valorBuscado)
    } 

    if (valorBuscado > atual.preco) {
        return busca(array, meio + 1, ate, valorBuscado)
    }
};

console.log(busca(listaLivros, 0, listaLivros.length - 1, 40));
1 resposta
solução!

Identifiquei o erro, está no if dos valores buscado, exatamente no operador lógico, pois está sendo utilizado o mesmo para duas comparações...

solução:

if (valorBuscado < atual.preco) {
        //vai ser usado recursao para fatiar o array
        return busca(array, de, meio - 1, valorBuscado)
    }

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