¿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,
airá antes queb. - Si la función devuelve un número positivo,
birá antes quea. - 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);