En Javascript la ordenación de arrays se realiza con el método
array.sort(). Sin embargo, esta ordenación es
lexicográfica y alfanumérica, con lo que si deseamos ordenar un array numérico tendremos problemas. Veamos este ejemplo:
var myarray = [40,100,1,5,25,10];
myarray.sort(); //La función devuelve [1,10,100,25,40,5]
Lo mismo ocurre si intentamos ordenar de forma descendente, ya que primero deberíamos ordenar ascendentemente con el método array.sort() y después invertir el resultado con el método
array.reverse(). Al venir ya incorrecta la ordenación ascendente, el método reverse() simplemente nos imprimiría [5,40,25,100,10,1].
Para solucionar estos problemas es muy sencillo. Simplemente pasamos una función como argumento del método sort() y ya tenemos el array numérico ordenado ascendentemente:
var myarray = [40,100,1,5,25,10];
myarray.sort(function(a,b){return a - b}); //La función devuelve [1,5,10,25,40,100]
Para ordenar descendentemente podríamos usar el método reverse() sobre el resultado anterior o invertir la resta de los parámetros de la función que usamos dentro del sort() de la siguiente forma:
var myarray = [40,100,1,5,25,10];
myarray.sort(function(a,b){return b - a}); //La función devuelve [100,40,25,10,5,1]