Funciones básicas para ordenar arrays en Javascript, basadas en las funciones clásicas en PHP, que podemos obtener mediante la librería php.js.
En cualquier lenguaje de programación se utilizan estructuras de datos y en concreto los arrays (tablas o matrices en español) son una de las más sencillas y más utilizadas. En Javascript, el popular lenguaje de programación del lado del cliente para desarrollar páginas web, disponemos también de los arrays y se utilizan bastante. Una de las tareas más habituales que podemos desear realizar con arrays es ordenarlos, de modo que sus elementos se dispongan de mayor a menor o viceversa.
Javascript es un lenguaje potente, que permite hacer muchas cosas, pero el lenguaje en si no tiene un juego de funciones muy grande, como el que podemos conocer de otros lenguajes como PHP. En un pasado artículo presentamos las librerías php.js, que son un paquete de funciones disponibles en PHP, portadas a Javascript y que ponen a disposición gratuitamente para cualquier desarrollador. En este artículo vamos a aprender a ordenar arrays de una manera cómoda utilizando funciones como sort() disponibles en PHP y ahora también en Javascript.
Para hacer las ordenaciones de elementos de un array tenemos primero de declarar el array y definir varios elementos. Vamos a trabajar con un array como este:
var mi_array = [12, 923, 4, 1024, 405, 56];
Orden de un array con sort()
Como primer paso, vamos a ordenar el array por sus elementos, de menor a mayor, que sería el orden más típico que podamos necesitar. Para ello vamos a utilizar la función sort(), que es una función existente en PHP (portada ahora también a Javascript por medio de phpjs.org) que ordena las matrices por los valores almacenados en sus casillas, de manera ascendente.
Además, en esa página de documentación, podremos observar que sort() requiere de otra función de las librerías php.js llamada i18n_loc_get_default() para correr bien y que deberemos descargar también. Si pasamos por la sección "Compile" de phpjs.org y seleccionamos la función sort(), veremos que también se selecciona automáticamente la función requerida.
En la llamada a sort() tenemos que indicar como parámetro la variable que tiene el array a ordenar y recibiremos como valor de respuesta el array ordenado.
var array_ordenado = sort(mi_array);
Para ver si el array está ordenado habría que hacer un recorrido a cada una de sus casillas y mostrar de algún modo sus contenidos. Esto lo podemos hacer con un bucle y mostrando cada uno de sus elementos, por ejemplo, en una caja de alerta. Utilizaríamos un código como este:
for(i=0; i<array_ordenado.length; i++){
alert (array_ordenado[i]);
}
Pero ya que estamos aprendiendo a manejar las librerías de php.js, vamos a aprovecharnos de una función útil de PHP que muestra el contenido de una variable, incluso de algunas estructuras de datos, como arrays, y objetos. Se trata de la función print_r(), que también tendremos que descargar en algún paquete del sitio de php.js.
Por ejemplo, podemos observar este código completo, que declara el array, lo ordena y por último muestra su contenido completo con print_r().
<pre>
<script>
var mi_array = [12, 923, 4, 1024, 405, 56];
array_ordenado = sort(mi_array);
document.write("<b>Ordenado ascendente:</b><br>" + print_r(array_ordenado, true));
</script>
</pre>
Como hemos visto, el código está metido dentro de una etiqueta PRE de HTML, para que la salida de print_r() se muestre preformateada y se observe mejor en la página web, con sus saltos de línea y tabulaciones.
Ordenar un array de manera descendente con rsort()
La función rsort() hace lo mismo que sort(), pero devuelve el array ordenado de manera descendente. La "r" viene de "reverse" y viene a significar que el orden se realiza de manera inversa.
El uso de rsort(), como bien debemos suponer, es bastante sencillo. Se trata simplemente de enviar el array que deseamos ordenar como parámetro y se recibe como valor de respuesta un nuevo array ordenado.
array_descendente = rsort(mi_array);
Si lo deseamos, podemos ver el contenido de este array a partir de una llamada a la función print_r() comentada anteriormente.
document.write("<b>Ordenado descendente:</b><br>" + print_r(array_descendente,true));
Estas funciones pueden ser útiles si deseas ordenar de una manera rápida elementos de un array y no complicarte demasiado. Pero recuerda que Javascript tiene su propia función sort para arrays que permite hacer las cosas de manera también muy potente.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...