El método JavaScript Array.sort() se usa para ordenar los elementos de la array en el lugar y devuelve la array ordenada. Esta función ordena los elementos en formato de string. Funcionará bien para arrays de strings pero no para números. Por ejemplo: si los números se ordenan como strings, entonces «75» es mayor que «200».
Ejemplo:
Input : [12, 25, 31, 23, 75, 81, 100] Wrong Output : [100, 12, 23, 25, 31, 75, 81] Correct Output : [12, 23, 25, 31, 75, 81, 100]
Ejemplo: este ejemplo ordena los elementos de la array en formato de string.
javascript
<script> // Declare and initialize original array var marks = [12, 25, 31, 23, 75, 81, 100]; // Print Before Sorting Array document.write("Original Array</br>"); document.write(marks); document.write("</br>"); // Call sort function marks.sort(); document.write("</br>After Sorting in Ascending Order</br>"); // Print Sorted Numeric Array document.write(marks); </script>
Producción:
Original Array 12,25,31,23,75,81,100 After Sorting in Ascending Order 100,12,23,25,31,75,81
Entonces, ¿cómo ordenar los elementos de la array de números?
Hay dos enfoques para ordenar la array de números en orden ascendente.
- Uso de la función de comparación
- Creando bucles
Uso de la función de comparación: podemos crear una función de comparación que devuelva valores negativos, cero o positivos.
Sintaxis:
function(a, b){return a - b}
- Valor negativo ( a > b ) => a se colocará antes de b
- valor cero (a == b) => Sin cambio
- Valor positivo (a < b ) => a se colocará después de b
Ejemplo: este ejemplo utiliza la función de comparación para ordenar los elementos de la array en orden ascendente.
javascript
<script> // Declare and initialize an Array var marks = [12, 25, 31, 23, 75, 81, 100]; // Print Before sorting array document.write("Original Array</br>"); document.write(marks); document.write("</br>"); // Sort elements using compare method marks.sort(function(a, b){return a - b}); document.write("</br>After sorting in Ascending order</br>"); // Print sorted Numeric array document.write(marks); </script>
Producción:
Original Array 12,25,31,23,75,81,100 After sorting in Ascending order 12,23,25,31,75,81,100
Ahora, nos gustaría ordenar la array en orden Descendente de lo que tenemos que cambiar la función de comparación.
Sintaxis:
function(a, b){return b - a}
- Valor negativo (b < a) => a se colocará después de b
- valor cero (a == b) => Sin cambio
- Valor positivo (b > a ) => a se colocará antes de b
Ejemplo: este ejemplo utiliza la función de comparación para ordenar los elementos de la array en orden descendente.
javascript
<script> // Declare and initialize an Array var marks = [12, 25, 31, 23, 75, 81, 100]; // Print Before sorting array document.write("Original Array</br>"); document.write(marks); document.write("</br>"); // Sort elements using compare method marks.sort(function(a, b){return b - a}); document.write("</br>After sorting in Ascending order</br>"); // Print sorted Numeric array document.write(marks); </script>
Producción:
Original Array 12,25,31,23,75,81,100 After sorting in Ascending order 100,81,75,31,25,23,12
Creación de bucles: también podemos usar bucles para ordenar los elementos de la array. Aquí, utilizaremos la clasificación de burbujas (técnica de clasificación simple) para clasificar los elementos de la array en orden ascendente.
Ejemplo:
javascript
<script> // Sorting function function Numeric_sort(ar) { var i = 0, j; while (i < ar.length) { j = i + 1; while (j < ar.length) { if (ar[j] < ar[i]) { var temp = ar[i]; ar[i] = ar[j]; ar[j] = temp; } j++; } i++; } } // Original Array var arr = [1, 15, 10, 45, 27, 100]; // Print Before sorting array document.write("Original Array</br>"); document.write(arr); document.write("</br>"); // Function call Numeric_sort(arr); document.write("</br>Sorted Array</br>"); // Print sorted Numeric array document.write(arr); </script>
Producción:
Original Array 1,15,10,45,27,100 Sorted Array 1,10,15,27,45,100