Oi Márcio, tudo bem?
O seu código tá bem estruturado e seguindo a lógica explicada no vídeo.
Mas notei que você não inicializou a variável contVez
que controla o loop for
. Isso pode gerar um comportamento indefinido, pois a variável não tem um valor inicial.
Você pode corrigir isso inicializando contVez
com um valor, como 0, por exemplo:
for(let contVez = 0; contadorLista1 < lista1.length && contadorLista2 < lista2.length; contVez++){
Outro ponto é que seu código atual não está tratando o caso em que um dos arrays acaba antes do outro durante a comparação. Isso pode causar um erro, pois seu código tentará acessar um elemento que não existe (undefined) em um dos arrays.
Para evitar isso, você pode adicionar uma verificação adicional para garantir que os elementos existem antes de compará-los:
if(contadorLista1 < lista1.length && (contadorLista2 == lista2.length || lista1[contadorLista1].valor < lista2[contadorLista2].valor)){
listaNova.push(lista1[contadorLista1]);
contadorLista1++;
}
else if(contadorLista2 < lista2.length){
listaNova.push(lista2[contadorLista2]);
contadorLista2++;
}
Neste caso, se o contador de um dos arrays atingir o comprimento do array (ou seja, todos os elementos já foram processados), o código adicionará automaticamente os elementos restantes do outro array à lista nova.
Espero ter ajudado.
Um abraço e bons estudos.