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

[Dúvida] Parte 2 Recebe Undefined

Salve Salveee.

Por algum motivo o while está acusando que o parametro parte2 retorna um tamanho (length) undefined no segundo processo, da funcao ordena() Segue o array original

const editora1 = [
    {
        nome: "Python",
        preco: 32
    },
    {
        nome:"Java",
        preco: 40
    },
    {
        nome:"Php",
        preco: 70
    },
    {
        nome:"JavaScript",
        preco: 60
    },
    {
        nome:"Rust",
        preco: 53
    },
    {
        nome: "Rubi",
        preco: 12
    },
    {
        nome: "Elixir2.0",
        preco: 32
    }
];


module.exports = editora1

Segue agora o script

const listaLivros = require("./editoras.js");
//console.log(listaLivros)

function mergeSort(array){
    if(array.length > 1){
        let meioDoArray = Math.floor(array.length / 2);
        let primeiraParte = mergeSort(array.slice(0, meioDoArray));
        let segundaParte = mergeSort(array.slice(meioDoArray, array.length));
        array = ordena(primeiraParte, segundaParte);
    } 
    return array
}

function ordena(parte1, parte2){
    console.log(parte1, parte2)
    let posicaoAtualParte1=0;
    let posicaoAtualParte2=0;
    let arrayOrganizado = [];
    while(parte1.length > posicaoAtualParte1 && parte2.length > posicaoAtualParte2){
        let produtoAtualParte1 = parte1[posicaoAtualParte1];
        let produtoAtualParte2 = parte2[posicaoAtualParte2];
        if(produtoAtualParte1.preco < produtoAtualParte2.preco){
            arrayOrganizado.push(parte1[posicaoAtualParte1])
            posicaoAtualParte1++
        }else{
            arrayOrganizado.push(parte2[posicaoAtualParte2])
            posicaoAtualParte2++
        }
    }
    arrayOrganizado.concat(posicaoAtualParte1 < parte1.length ? 
            parte1.slice(posicaoAtualParte1)
        : parte2.slice(posicaoAtualParte2));
}
mergeSort(listaLivros);
//console.log(mergeSort(listaLivros))
1 resposta
solução!

Oi Lucas!

Rodei o código aqui e está tudo Ok, só faltou dar o return pra retornar o resultado da ordenação ;)

  return arrayOrganizado.concat(
    posicaoAtualParte1 < parte1.length
      ? parte1.slice(posicaoAtualParte1)
      : parte2.slice(posicaoAtualParte2)
  );

Fazendo isso deve rodar normalmente.

Bons estudos ;)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!