Ordenando um array numérico
Um pequeno impecÃlho, na hora de ordenar um vetor número em javascript, pode deixar o programador com um pouco de dor de cabeça. O método sort() do objeto Array utiliza um algoritmo de ordenação de caracteres para ordenar os itens do array, ou seja, quando você quer ordenar um array de números, ele coloca o 10 antes do 2, por exemplo. Veja como resolver isto.
[4,7,2,10,35,67,3,2].sort(function(){return arguments[0] - arguments[1];});
Note que estamos passando um parâmetro para o método sort(). Esse parâmetro é a função que vamos utilizar para determinar se qual dos dois itens é maior. Se não passarmos esse parâmetro para o sort, ele vai considerar que os itens do array são caracteres.
Você também pode criar um novo método para o objeto Array, o que lhe permite usar este novo método em qualquer array. Para isso, vamos usar o conceito de prototype do javascript. Veja como ficou nosso novo método para ordenar vetores numéricos:
Array.prototype.sortnum = function() {
return this.sort(function(){return arguments[0] - arguments[1];});
}
Para finalizar, preparei um exemplo para vocês demonstrando os resultados da ordenação normal e da utilizando nosso novo método sortnum.

Junho 12th, 2008 at 15:44
Qual a explicação para o arguments[0] - arguments[1]?
O que isso faz?
Junho 12th, 2008 at 15:53
Oi Otto,
“arguments” é um array nativo que toda função do Javascript tem. Ele terá todos os argumentos passados para a função.
Abraço
Junho 17th, 2008 at 14:41
Tudo bem, mas você retornou a diferença entre o primeiro e o segundo argumento? Quais foram os argumentos passados na prática?
É meio confuso para quem não está acostumado com closures.
Julho 18th, 2008 at 11:27
Faltou essa informação:
/*
* Retornar:
* - Um valor negativo se o primeiro argumento for menor que o segundo.
* - Zero se os dois argumentos forem equivalentes.
* - Um valor positivo se o primeiro argumento for maior que o segundo.
*/