Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Não está ordenando como deveria!!

const lista = [
    {
    titulo: "Python",
    preco: 45
    },
    {
    titulo: "Rust",
    preco: 25
    },
    {  
    titulo: "Ruby",
    preco: 40
    },
    { 
    titulo: "C#",
    preco: 28
}, 
{
    titulo: "C++", 
    preco: 35
},
{
    titulo: "Scala",
    preco: 40
},
{
    titulo: "Java",
    preco: 43
},
{
    titulo: "JavaScript",
    preco: 20
},
{
    titulo: "Go",
    preco: 30
},
{
    titulo: "Elixir",
    preco: 50
}
];

module.exports = {lista}

Não consigo identificar o por que meu código abaixo não está ordenando a lista como deveria.

const lista = require('./listas2')

function mergeSort (arr) {
    if(arr.length > 1) {
        const meio = Math.floor(arr.length / 2);
        const parte1 = mergeSort(arr.slice(0, meio));
        const parte2 = mergeSort(arr.slice(meio, arr.length));
        arr = ordena(parte1, parte2);
    }
    return arr;
}


function ordena (parte1, parte2){
    let posicaoParte1 = 0;
    let posicaoParte2 = 0;
    const resultado = [];

    while(posicaoParte1 < parte1.length && posicaoParte2 < parte2.length){
        let produtoParte1 = parte1[posicaoParte1];
        let produtoParte2 = parte2[posicaoParte2];

        if(produtoParte1.preco < produtoParte2.preco){
            resultado.push(produtoParte1)
            posicaoParte1++
        } else {
            resultado.push(produtoParte2)
            posicaoParte2++
        }
    }
    return resultado.concat(posicaoParte1 < parte1.length 
        ? parte1.slice(posicaoParte1)
        : parte2.slice(posicaoParte2))
}

console.log(mergeSort(lista));
2 respostas
solução!

Oi, Pedro! Tudo bem?

O problema está ocorrendo pois ao declarar module.exports = {lista}, estamos exportando o objeto que contém a propriedade lista e não a lista diretamente. Dessa forma, ao importar esse módulo em outro arquivo, precisamos acessar a lista usando a sintaxe:

const lista = require('./listas2').lista;

Por outro lado, se declararmos module.exports = lista, como na aula, estamos exportando diretamente a variável lista. Isso permite que tenhamos acesso a lista diretamente ao importar o módulo, sem a necessidade de especificar uma propriedade adicional. Em outras palavras, ao importar o módulo, poderemos acessar a lista usando apenas const lista = require('./listas2').

Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Oi Sarah, estou bem e espero que você também esteja!!!

Muito obrigada pela sua ajuda, sinceramente toda vez que eu encontro algum erro no JS ou qualquer outra linguagem de prog... ele sempre está onde menos imagino que esteja!!!!