2
respostas

Não puxa os dois ultimos livros

Fiz igual, mas não esta puxando os dois ultimos livros que sobraram na lista Ed Folha. O meu codigo ficou como abaixo. Por favor, alguem consegue me ajudar, pois não achei onde estou errando.

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

while(posicaoAtualLista1 < lista1.lenght) {
    listaFinal[atual] = lista1[posicaoAtualLista1]
    posicaoAtualLista1++;
    atual++;
}

while(posicaoAtualLista2 < lista2.lenght) {
    listaFinal[atual] = lista2[posicaoAtualLista2]
    posicaoAtualLista2++;
    atual++;
}

return listaFinal;

}

console.log(juntaListas(edGalho, edFolha))

O resultado é:

[ { 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 } ]

2 respostas

oie boa tarde, então o seu problem é um problema bem simples , ja aconteceu comigo varias e varias vezes kkk

nos seus dois ultimos while ta escrito errado o length ( ele ta com o "T" e o "H" trocado de lugar )

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

    while(posicaoAtualLista1 < lista1.length) {
        listaFinal[atual] = lista1[posicaoAtualLista1]
        posicaoAtualLista1++;
        atual++;
    }

    while(posicaoAtualLista2 < lista2.length) {
        listaFinal[atual] = lista2[posicaoAtualLista2]
        posicaoAtualLista2++;
        atual++;
    }

    return listaFinal;
}

console.log(juntaListas(edGalho, edFolha))

e se quiser encurtar um pouco o código, como o listaFinal é um array, pode utilizar o push para ir adicionando as informações sem precisar da variável atual e desta forma nao precisara fazer o atual++ dentro dos whiles