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

ERRO na hora de mostrar no console

MEu código está dando erro e não consigo entender porque.

Segue o código:

const { edGalho, edFolha } = require("./arrays")

function juntaListas(lista1, lista2) {
    let listaFinal = [];
    let posicaoAtualLista1 = 0;
    let posicaoAtualLista2 = 0;
    let atual = 0;

    while(posicaoAtualLista1 < lista1.length || posicaoAtualLista2 < lista2.length) {
        let produtoAtualLista1 = lista1[posicaoAtualLista1];
        let produtoAtualLista2 = lista2[posicaoAtualLista2];

        if(produtoAtualLista1.preco < produtoAtualLista2.preco) {
            listaFinal[atual] = produtoAtualLista1;
            posicaoAtualLista1++;
        } else {
            listaFinal[atual] = produtoAtualLista2;
            posicaoAtualLista2++
        }

        atual++
    }

    return listaFinal
}

console.log(juntaListas(edGalho, edFolha))

Segue o erro:

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

2 respostas

Eai!

O erro significa que não existe um "produtoAtualLista1.preco" portanto, retorna undefined, e quando um objeto tem uma propriedade undefined, não conseguimos iterar e fazer validações nele.

Certifique-se de que exista um preço na sua lista antes de iniciar, coloque um console.log(produtoAtualLista1.preco) antes do if para verificar se exibe algum valor diferente de undefined no console.

Use também o "Optional Chaining" (encadeamento opcional). Ele foi introduzido no ECMAScript 2020 (também conhecido como ES11) e permite acessar propriedades de objetos de forma segura, evitando erros se uma propriedade intermediária for null ou undefined.

solução!

Agradeço pela atenção mas já descobri o erro. Eu havia mudado o && do While pelo II por minha conta, achando que ia resolver o problema. Mas na aula seguinte já estou vendo que não é assim que vai ser resolvido. Coloquei o && e voltou a funcionar. Agradeço desde já.