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

Um jeito alternativo

Observando o código da aula pensei em uma possível alteração do código, mas também lendo algumas das sugestões, adotei a ideia do colega @marcos (cursos.alura.com.br/user/mbeletato) que sugeriu o uso do push() para descartar o uso de índice na lista final

  • +comentários
  • +push
  • +função
  • -while
/**
 * Junta duas listas de forma ordenada a propiedade preco dos seus objetos internos 
 * @param {Array} lista1 Lista com objetos > [{preco:Number}]
 * @param {Array} lista2 Lista com objetos > [{preco:Number}]
 * @returns {Array} - Lista ordenada 
 */
function juntaListas(lista1, lista2) {

    let listaFinal = [];
    let posicaoAtualLista1 = 0;
    let posicaoAtualLista2 = 0;
    let tamanho1 = lista1.length
    let tamanho2 = lista2.length


    while (posicaoAtualLista1 < tamanho1 && posicaoAtualLista2 < tamanho2) {
        if (lista1[posicaoAtualLista1].preco < lista2[posicaoAtualLista2].preco) {
            listaFinal.push(lista1[posicaoAtualLista1]);
            posicaoAtualLista1++;
        } else {
            listaFinal.push(lista2[posicaoAtualLista2]);
            posicaoAtualLista2++;
        }
    }
    
    /**
     * Empurra apartir do indice, todos os itens para a lista final
     * @param {Number} posicaoAtual 
     * @param {Array} lista 
     */
    function esvaziar(posicaoAtual, lista){
      while(posicaoAtual < lista.length){
       listaFinal.push(lista[posicaoAtual])
       posicaoAtual++
      }
   }

   posicaoAtualLista1 < tamanho1 ? esvaziar(posicaoAtualLista1, lista1) : posicaoAtualLista2 < tamanho2 ? esvaziar(posicaoAtualLista2, lista2) : ""

   return listaFinal
}

console.log(juntaListas(edFolha, edGalho));
1 resposta
solução!

Opa Jorge, tudo bem?

Que legal! Fico feliz em saber que está aproveitando o ambiente para procurar outras formas de se chegar ao resultado esperado, continue assim!

Parabéns pela iniciativa de desenvolver uma forma própria e praticar seus conhecimentos e ir além do que foi ensinado no curso. É muito importante colocar em prática o que se aprende e se desafiar a criar algo novo.

Conte sempre com a Alura para evoluir seus estudos.

Grande abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software