Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Bug] Bug no terminal

deu tudo certo até executar no console.log. Fez a troca, mas o nome do elemento a ser trocado não apareceu.

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

3 respostas

Tem como colocar o código inteiro aqui? Só essa parte não está dando para dizer muita coisa, por exemplo não sei se o de/para ai é uma array e vc está pegando somente o primeiro elemento ou é uma string

Opa tem sim, avancei para a próxima aula e o bug continua, deve ser algo no código que não esta certo.

const listaLivros = require('./array')

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++
        }
    }

    trocaLugar(array, array.indexOf(pivo), menores)
    return array;
}
function trocaLugar(array, de, para) {

    const elem1 = [de]
    const elem2 = [para]

    array[para] = elem1
    array[de] = elem2

}
# console.log(encontraMenores(listaLivros[2], listaLivros));
solução!

Pelo que estou vendo aqui, vc está usando como parametro a palavra array, que é uma palavra reservada, ou seja é melhor utilizar outro, tipo arrayElementos, ou algo do genero, outro ponto é nas constantes elem1 e elem2, vc está passando os indices dos elementos, porém ao jogar nas contantes vc joga eles solto, não deveria ser na array q está sendo passada?

Olha essa modificação que eu fiz:

function encontraMenores(pivo, arrayElementos) {

    let menores = 0;

    for(let atual = 0; atual < arrayElementos.length; atual++) {

        let produtoAtual = arrayElementos[atual]
        if (produtoAtual.preco < pivo.preco) {
            menores++
        }
    }

    trocaLugar(arrayElementos, arrayElementos.indexOf(pivo), menores)
    return arrayElementos;
}
function trocaLugar(arrayElementos, de, para) {
  console.log({ de, para })

    const elem1 = arrayElementos[de]
    const elem2 = arrayElementos[para]

    arrayElementos[para] = elem1
    arrayElementos[de] = elem2

}