Já que existe um problema de existir atributos "undefined" em um array caso o laço de repetição while continue por mais tempo do que o tamanho no menor array, eu realizei uma verificação booleana para contornar esse problema.
const { edGalho, edFolha } = require('./arrays');
function juntaListas(lista1, lista2) {
let listaFinal = [];
let posicaoAtualLista1 = 0;
let posicaoAtualLista2 = 0;
let atual = 0;
while (listaFinal.length < edFolha.length + edGalho.length) {
let produtoAtualLista1 = lista1[posicaoAtualLista1];
let produtoAtualLista2 = lista2[posicaoAtualLista2];
if (produtoAtualLista1 && produtoAtualLista2) {
if (produtoAtualLista1.preco < produtoAtualLista2.preco) {
listaFinal[atual] = produtoAtualLista1;
posicaoAtualLista1++;
} else {
listaFinal[atual] = produtoAtualLista2;
posicaoAtualLista2++;
}
} else if (produtoAtualLista1) {
listaFinal[atual] = produtoAtualLista1;
posicaoAtualLista1++;
} else if (produtoAtualLista2) {
listaFinal[atual] = produtoAtualLista2;
posicaoAtualLista2++;
}
atual++;
}
return listaFinal;
}
console.log(juntaListas(edGalho, edFolha))