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
array.sort([função]);
Exemplo
Vamos ordenar um array:
let arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());
Resultado da execução do código:
['a', 'b', 'c', 'd']
Exemplo
Vamos ordenar um array com números:
let arr = [4, 1, 7, 2];
console.log(arr.sort());
Resultado da execução do código:
[1, 2, 4, 7]
Exemplo
Vamos adicionar números ao array e ordená-lo:
let 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:
[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:
let 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:
[1, 2, 4, 7, 111, 123]
Exemplo
Vamos, por conveniência, encurtar o código da nossa função do exemplo anterior:
let 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:
[1, 2, 4, 7, 111, 123]
Exemplo
E agora, usando uma função, vamos ordenar o array em ordem decrescente:
let 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:
[123, 111, 7, 4, 2, 1]
Exemplo
Vamos ordenar um array de objetos
pela chave 'one' em ordem crescente:
let 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:
[
{one: 1, two: 2},
{one: 3, two: 3},
{one: 7, two: 1}
]
Exemplo
E agora vamos ordenar o array de objetos
pela chave 'two':
let 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:
[
{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:
let arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();
console.log(arr);
Resultado da execução do código:
['a', 'b', 'c', 'd']
Veja também
-
método
filter,
que permite filtrar elementos do array