Menu
Coddy logo textTech

El método Sort

Parte de la sección Lógica y Flujo del Journey de JavaScript de Coddy — lección 57 de 65.

El método sort() le permite ordenar los elementos de un array en su lugar y devuelve el array ordenado. Por defecto, ordena los elementos como cadenas en orden alfabético y ascendente.

Aquí está la sintaxis básica:

array.sort([compareFunction])

Ejemplo sin usar la función de comparación:

const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']

ADVERTENCIA: Los números no se ordenan como se espera sin una función de comparación:

const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (ordenación numérica incorrecta)

Para ordenar números correctamente o implementar un ordenamiento personalizado, necesitas usar una función de comparación.

La función de comparación debe devolver:

  • Un valor negativo si a debe ir antes que b
  • Un valor positivo si b debe ir antes que a
  • Cero si son iguales

Aquí tienes cómo ordenarías números usando una función de comparación:

// Orden ascendente
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]
// Orden descendente
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]

Otro ejemplo de cómo ordenar objetos:

const people = [
    { name: 'John', age: 30 },
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 35 }
];

// Sort by age (ascending)
people.sort((a, b) => a.age - b.age);
// Ordenar por nombre (alfabéticamente usar localeCompare())
people.sort((a, b) => a.name.localeCompare(b.name));
challenge icon

Desafío

Fácil

Crea una función llamada sortByLength que reciba un array de cadenas y devuelva un nuevo array con las mismas cadenas ordenadas por su longitud en orden ascendente. Si dos cadenas tienen la misma longitud, deben ordenarse alfabéticamente.

Pruébalo tú mismo

function sortByLength(arr) {
    return arr.sort((a, b) => {
        // Escribe el código aquí
    })
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo