¿Cómo ordenar una array numérica usando JavaScript?

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

Publicación traducida automáticamente

Artículo escrito por MOINKHAN1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *