Método sort

O método sort realiza a ordenação de um array em ordem lexicográfica e retorna o array já modificado. Um parâmetro opcional permite especificar uma função personalizada para a ordenação.

Sintaxe

javascriptarray.sort([função]);

Exemplo

Vamos ordenar um array:

javascriptlet arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());

Resultado da execução do código:

javascript['a', 'b', 'c', 'd']

Exemplo

Vamos ordenar um array com números:

javascriptlet arr = [4, 1, 7, 2];
console.log(arr.sort());

Resultado da execução do código:

javascript[1, 2, 4, 7]

Exemplo

Vamos adicionar números ao array e ordená-lo:

javascriptlet arr = [1, 123, 2, 4, 111, 7];
console.log(arr.sort());

Como resultado da execução do código veremos que os números não estão dispostos em ordem crescente, mas em ordem lexicográfica, ou seja, os números são comparados entre si como strings. Nesse caso, a comparação é feita por cada caractere, verificando se o código do primeiro caractere é maior que o do vizinho, e assim por diante. Resultado:

javascript[1, 111, 123, 2, 4, 7]

Exemplo

Agora vamos ordenar o array usando uma função, na qual definiremos a condição - se o primeiro parâmetro for maior que o segundo, então os trocamos (para isso, em return, qualquer número positivo). Caso contrário, a troca não é necessária e indicamos 0 ou qualquer número negativo:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

arr.sort(function(a, b) {
  if (a > b) {
    return 1;
  } else {
    return -1;
  }
});

console.log(arr);

Resultado da execução do código:

javascript[1, 2, 4, 7, 111, 123]

Exemplo

Vamos, por conveniência, encurtar o código da nossa função do exemplo anterior:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

arr.sort(function(a, b) {
  return a - b;
});

console.log(arr);

Resultado da execução do código:

javascript[1, 2, 4, 7, 111, 123]

Exemplo

E agora, usando uma função, vamos ordenar o array em ordem decrescente:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

arr.sort(function(a, b) {
  return b - a;
});

console.log(arr);

Resultado da execução do código:

javascript[123, 111, 7, 4, 2, 1]

Exemplo

Vamos ordenar um array de objetos pela chave 'one' em ordem crescente:

javascriptlet arr = [
  {one: 1, two: 2},
  {one: 7, two: 1},
  {one: 3, two: 3}
];
arr.sort(function(a, b) {
  return a.one - b.one;
});

console.log(arr);

Resultado da execução do código:

javascript[
  {one: 1, two: 2},
  {one: 3, two: 3},
  {one: 7, two: 1}
]

Exemplo

E agora vamos ordenar o array de objetos pela chave 'two':

javascriptlet arr = [
  {one: 1, two: 2},
  {one: 7, two: 1},
  {one: 3, two: 3}
];
arr.sort(function(a, b) {
  return a.two - b.two;
});

console.log(arr);

Resultado da execução do código:

javascript[
  {one: 7, two: 1},
  {one: 1, two: 2},
  {one: 3, two: 3}
]

Exemplo

Vamos verificar se o array foi alterado após a aplicação do método sort:

javascriptlet arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();

console.log(arr);

Resultado da execução do código:

javascript['a', 'b', 'c', 'd']

Veja também

  • método filter,
    que permite filtrar elementos do array