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));