Sobes.tech
Junior

¿Cómo clasificarías un array de números?

sobes.tech AI

Respuesta de la IA

// Usamos el método sort() con una función de comparación
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Orden ascendente

// Para ordenar en orden descendente:
// numbers.sort((a, b) => b - a);

El método sort() en JavaScript ordena los elementos del array en su lugar. Por defecto, convierte los elementos en cadenas y los ordena lexicográficamente. Para ordenar números correctamente, es necesario pasarle una función de comparación a sort().

La función de comparación toma dos argumentos, a y b.

  • Si la función devuelve un número negativo, a irá antes que b.
  • Si la función devuelve un número positivo, b irá antes que a.
  • Si la función devuelve 0, el orden de los elementos no cambia.

Para ordenar números en orden ascendente se usa (a, b) => a - b. Si a es menor que b, el resultado es negativo y a va antes que b. Para ordenar en orden descendente se usa (a, b) => b - a. Si b es menor que a, el resultado es positivo y b va antes que a.

Otros métodos (menos frecuentes para arrays numéricos simples, pero útiles):

  • Método localeCompare() para cadenas con números:

    // No recomendado para números puros, pero puede usarse
    // si los números están representados como cadenas y se necesita considerar la localización.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // Ordenará como [ "1", "2", "10" ]
    
  • Crear una copia del array antes de ordenar:

    // Si se desea mantener el array original
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // o
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);