2
respostas

[Dúvida] Código reproduzido na aula não funciona - Ordenação JS

Boa tarde. Fiz um código idêntico ao mostrado na aula sobre ordenação de algoritmos em JS, mas não está funcionando da maneira de deveria (ordem por preço). Segue abaixo o código. Caso alguém possa me ajudar, agradeço de verdade.

// Insertion Sort - Inserindo os elementos na posição desejada
const livros = [
    {
        titulo: 'JavaScript',
        preço: 25
    },
    {
        titulo: 'PHP',
        preço: 15
    },
    {
        titulo: 'Java',
        preço: 30
    },
    {
        titulo: 'Elixir',
        preço: 50
    },
    {
        titulo: 'Go',
        preço: 45
    },
    {
        titulo: 'Python',
        preço: 20
    }
];


function insertionSort(listaQualquer) {
    for(let i = 0; i < listaQualquer.lenght; i++) {
        let analise = i;
        while(analise > 0 && listaQualquer[analise].preço < listaQualquer[analise - 1].preço) {
            let itemAnalise = listaQualquer[analise];
            let itemAnterior = listaQualquer[analise - 1];

            listaQualquer[analise] = itemAnterior     
            listaQualquer[analise - 1] = itemAnalise 
            // Essa parte acima serve para trocar a posição dos itens analisados!

            analise--  // Sai do loop while
        }
    }

    console.log(listaQualquer);
}

insertionSort(livros);
2 respostas

Olá Pablo, tudo bem ?

Vi aqui seu código e tem um pequeno erro rsrs

Já havíamos criado esse array Livros, porém em outro arquivo, lembra? Você precisa exportar o arquivo no insertionSort para funcionar, seria esse o código para exportar:

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

E no arquivo que contém esse array, você precisa colocar ele para ser exportado, o código seria esse :

module.export = 'nome da array'

Quando terminar de fazer isso, exclua o array no seu arquivo e deixe apenas a função rodando para tudo dar certo. Ta bom? =D

O for de sua função tem um erro de escrita

for(let i = 0; i < listaQualquer.lenght; i++) { -> ta escrito lenght e não length