Olá Osmair! O método sort () classifica os itens de um vetor. A ordem de classificação pode ser alfabética ou numérica, e ascendente (para cima) ou descendente (para baixo). Por padrão, o método sort () classifica os valores como Strings em ordem alfabética e ascendente. Exemplo:
var frutas = ["Uva", "Manga", "Banana", "Laranja" ];
frutas.sort();
O resultado é:
Banana, Laranja, Manga, Uva
Isso funciona bem para strings ( "Banana" vem antes de "Uva"). No entanto, os números também são classificados como strings, "25" é maior que "100", porque "2" é maior que "1". Exemplo:
var numeros = [100, 25, 3, 2016];
numeros.sort();
O resultado é:
100, 2016, 25, 3
Devido a isso, o método sort () produzirá um resultado incorreto ao classificar números. Você pode corrigir isso, fornecendo uma "função de comparação".
Funciona assim. A função define uma ordem de classificação. A função deve retornar um valor negativo, zero ou positivo, dependendo dos argumentos. Quando o método sort () compara dois valores, envia os valores para a função de comparação e classifica os valores de acordo com o valor retornado (negativo, zero, positivo).
Exemplo: Ao comparar 40 e 100, o método sort () chama a função de comparação (40,100). A função calcula 40-100 e retorna -60 (um valor negativo). A função de classificação classificará 40 como um valor inferior a 100.
Na prática com o mesmo código anterior fica assim (repara que o retorno é a - b):
var numeros = [100, 25, 3, 2016];
numeros.sort(function(a, b){return a-b});
E o resultado é:
3, 25, 100, 2016
Se quiser o sentido inverso (repare que o retorno agora é b - a):
var numeros = [100, 25, 3, 2016];
numeros.sort(function(a, b){return b-a});
E o resultado será:
2016, 100, 25, 3
Sentido inverso com Strings:
var frutas = ["Uva", "Manga", "Banana", "Laranja" ];
frutas.sort();
frutas.reverse();
O resultado será:
Uva, Manga, Laranja, Banana
Sucesso nos estudos!