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

Resultado inesperado, sem retorno da lista de livros

Pessoal poderia me dar uma direção de onde estou errando?

const listaLivros = require('./arrays2');


function mergeSort(array) {
    if(array.length > 1) {
        const meioArray = Math.floor(array.length/2);
        const part1 = mergeSort(array.slice(0, meioArray));
        const part2 = mergeSort(array.slice(meioArray, array.length));

        array = ordenar(part1, part2); 
    };

    return array;
};

function ordenar(part1, part2) {
    let posicaoAtualParte1 = 0;
    let posicaoAtualParte2 = 0;

    let resultado = [];

    while(posicaoAtualParte1 < part1.length && posicaoAtualParte2 < part2.length) {
        let produtoAtualParte1 = part1[posicaoAtualParte1];
        let produtoAtualParte2 = part2[posicaoAtualParte2];

        if(produtoAtualParte1.preco < produtoAtualParte2.preco) {
            resultado.push(produtoAtualParte1);
            posicaoAtualParte1++;
        }else{
            resultado.push(posicaoAtualParte2);
            posicaoAtualParte2++;
        }
    }

    return resultado.concat(posicaoAtualParte1 < part1.length 
        ? part1.slice(posicaoAtualParte1) 
        : part2.slice(posicaoAtualParte2));
};


console.log(mergeSort(listaLivros));

RESULTADO DO CONSOLE:

[ 0, 1, 2, 3, 4, 5, 0, 1, 2, 0, { titulo: 'Go', preco: 45 } ]
1 resposta
solução!

if(produtoAtualParte1.preco < produtoAtualParte2.preco) { resultado.push(produtoAtualParte1); posicaoAtualParte1++; }else{ resultado.push(posicaoAtualParte2); posicaoAtualParte2++; }

    No else substituir posicaoAtualParte2 por produtoAtualParte2