1
resposta

Não entendi muito bem!

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 listaOrdenada = ordenar(clientes, "nome");

console.log(listaOrdenada);

Nessa função eu entendi que a mesma serve para comparar 2 valores, sendo um o "a" e o outro o ''b'', porém não entendi muito bem a função da "propriedade"! O que seria essa propriedade? Onde ela está sendo passada? Está sendo passada como parâmetro da constante listaOrdenada(clientes, nome)? Além disso não entendi muito bem também a função do return com o -1, 1 e 0, o que esses valores fazem?

1 resposta

Olá, Nathan! Como vai?

Vou tentar esclarecer suas dúvidas!

A "propriedade" é um parâmetro da função ordenar(). Ele representa a chave do objeto que você deseja usar para ordenar a lista. No seu exemplo, a propriedade é "nome", que é uma das chaves dos objetos na sua lista de clientes. Portanto, a lista será ordenada em ordem alfabética dos nomes dos clientes.

Quanto aos valores -1, 1 e 0, eles são usados para determinar a ordem dos elementos na lista. A função sort() do JavaScript usa esses valores para decidir como reordenar os elementos.

  • Se a função retorna um valor negativo (no caso, -1), isso significa que o elemento a deve vir antes do elemento b.
  • Se a função retorna um valor positivo (no caso, 1), isso significa que o elemento a deve vir depois do elemento b.
  • Se a função retorna 0, isso significa que a ordem dos elementos a e b é indiferente, ou seja, eles são iguais em termos de ordenação.

Por exemplo, se tivermos uma lista de clientes e quisermos ordená-los pelo nome, a função ordenar() vai comparar os nomes de dois clientes de cada vez. Se o nome do cliente a for "Ana" e o nome do cliente b for "Bruno", a função vai retornar -1, porque "Ana" vem antes de "Bruno" em ordem alfabética. Assim, na lista ordenada, "Ana" vai aparecer antes de "Bruno".

Espero ter ajudado e bons estudos!

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