Cómo ordenar arreglos en JavaScript con el método sort() [Ejemplos]

Este tutorial le mostrará cómo ordenar matrices en el lenguaje de programación JavaScript con la matriz sort() método y proporcionar algunos ejemplos de código.

¿Qué es una matriz en JavaScript?

Una matriz es un tipo de variable de JavaScript que puede contener una serie de variables, referencias a variables o valores.

Es como una lista de elementos. Cada elemento o elemento de la matriz tiene un valor y una posición. La posición es el orden en que aparece el elemento en la matriz y se denomina índice . Índices están indexados a cero, lo que significa que comienzan a contar en la posición 0 – por lo que el primer elemento de una matriz está en el índice 0, el segundo elemento está en el índice 1, y así sucesivamente.

En JavaScript, una matriz se construye utilizando corchetes ([]) para contener una lista de valores de matriz separados por comas:

var myArray = ['dog', 'cat', 'pig', 'parrot'];

La matriz sort() Método

Los valores de una matriz se pueden reordenar (cambiando el orden en que aparecen y su índice ). El ordenar() El método se puede usar para reordenar los elementos en una matriz en función de una función que compara los valores en ella.

Matriz JavaScript ordenar() Sintaxis del método

La sintaxis de JavaScript para la matriz sort() método es el siguiente:

array.sort(COMPARE_FUNCTION)

Tenga en cuenta que:

  • matriz puede ser cualquier variable de tipo matriz
  • COMPARAR_FUNCIÓN es opcional función de comparación
    • Si no se proporciona, los elementos de la matriz se ordenarán por su valor de cadena
    • La FUNCIÓN_COMPARE debe aceptar dos parámetros:los dos elementos que se compararán para definir el orden
    • La FUNCIÓN_COMPARE luego se ejecutará en cada elemento de la matriz y el elemento que le sigue para ordenar la matriz
  • matriz se ordenarán en su lugar – la matriz original se modificará y los elementos que contiene se ordenarán en lugar de devolver una matriz ordenada duplicada

Ejemplos de clasificación de matriz

Si no se pasa ninguna función de comparación a sort() método, los valores en él se convertirán en cadenas y se ordenarán por su valor UNICODE; de hecho, se ordenarán alfabéticamente en orden ascendente:

var myArray = ['dog', 'cat', 'pig', 'parrot'];
myArray.sort();
console.log(myArray);

La matriz ahora contendrá los valores ordenados:

["cat", "dog", "parrot", "pig"]

Ordenar de esta manera también se puede hacer en orden descendente simplemente invirtiendo la matriz ordenada:

var myArray = ['dog', 'cat', 'pig', 'parrot'];
myArray.sort();
myArray.reverse();
console.log(myArray);

La matriz ahora contendrá:

["pig", "parrot", "dog", "cat"]

Ordenar matriz con ejemplos de funciones de comparación

Las funciones de comparación se pueden utilizar para ordenar matrices según sus propios criterios.

Comparando Números

El siguiente código utilizará una función de comparación para clasificar los números en orden ascendente.

var myNumbers = [1, 5, 2, 3, 6, 10];
myNumbers.sort(function(value1, value2) {
        return value1 - value2;
    }); 
console.log(myNumbers);

Este es un ejemplo simple de cómo funciona la función de comparación. El resultado de valor1 – valor2 será negativo si valor2 es mayor que valor10 si son iguales, y en caso contrario positivo . Por lo tanto, los valores de la matriz se pueden ordenar en función de si el valor de retorno del valor de ordenación es positivo, negativo o cero.

Comparar objetos (y otros valores)

Las comparaciones pueden adoptar cualquier forma siempre que el valor devuelto se pueda analizar como un valor numérico positivo, negativo o cero. Esto le permite escribir su propia lógica de comparación para adaptarse a su escenario de uso.

A continuación, se define una matriz de objetos que contiene una lista de mascotas:su nombre, qué animal son y su edad.

Luego, la matriz se ordena utilizando una función de clasificación que compara la edad dentro de cada objeto, A MENOS QUE sea Moe el pez. Siempre ocupará el primer lugar en la matriz ordenada de acuerdo con la lógica de clasificación:

var myPets = [
    { name: 'Shemp', animal: "dog", age: 4 },
    { name: 'Larry', animal: "cat", age: 1 },
    { name: 'Moe', animal: "fish", age: 6 },
    { name: 'Curly', animal: "parrot", age: 5 }
];

myPets.sort(function(value1, value2) {
    if(value2.name === 'Moe') return 1;
    return value1.age - value2.age;
});

console.log(myPets);

Aleatorización de matrices de JavaScript

Las matrices también se pueden aleatorizar; lo cubrimos en un artículo separado aquí.