1
resposta

[Dúvida] Não entendi o porque do número

const clientes = require("./clientes.json");

function ordenar(lista, propriedade) {
    const resultado = lista.sort((a, b) => {
        if (a[propriedade] < b[propriedade]) {
            return -1;
        }
        if (a[propriedade] > b[propriedade]) {
            return 1;
        }
        return 0;
    })

    return resultado;
}

const ordenarNome = ordenar(clientes, "nome");

console.log(ordenarNome);

Não entendi para que serve esses números "-1;1;0" sendo que estamos tratando de palavras. E como uma propriedade vai ser menor que a outra:

if (a[propriedade] < b[propriedade]) {
            return -1;
        }
        if (a[propriedade] > b[propriedade]) {
            return 1;

Está no curso: JavaScript: objetos/ 05. Exercitando os conhecimentos/ Ordenando objetos.

Recomendo olharem no vídeo, porque por trás desse código há uma pasta no formato JSON com muitos objetos, onde o código acima os organiza.

1 resposta

O trecho de código que você compartilhou está implementando uma função de ordenação personalizada para um array de objetos em JavaScript. A função ordenar recebe uma lista (array) e uma propriedade pela qual a lista deve ser ordenada. Ela usa o método sort do JavaScript, que ordena os elementos de um array com base em uma função de comparação.

Os números -1, 1 e 0 são valores que a função de comparação deve retornar, e eles indicam a relação de ordem entre os elementos sendo comparados.

  • Se a função de comparação retorna um número negativo (-1), isso significa que o elemento a deve ser colocado antes do elemento b na ordenação.
  • Se a função de comparação retorna um número positivo (1), isso significa que o elemento a deve ser colocado depois do elemento b na ordenação.
  • Se a função de comparação retorna zero (0), isso significa que os elementos são considerados iguais em termos de ordenação, e a ordem entre eles não é modificada.

A comparação de strings em JavaScript é baseada na comparação lexicográfica. Portanto, quando você compara strings usando < e >, você está comparando a ordem lexicográfica das strings.

No caso do código que você compartilhou, a ordenação é realizada com base na propriedade especificada (propriedade). Se a propriedade for uma string (como no caso do exemplo com "nome"), a comparação será feita com base na ordem lexicográfica dos valores dessa propriedade.

Por exemplo, se você estiver ordenando objetos com base na propriedade "nome", e tiver objetos com nomes "Ana", "Carlos" e "Bianca", a ordem resultante após a chamada da função de ordenação será "Ana", "Bianca" e "Carlos".