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));Desafío
FácilCrea 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.
Hoja de referencia
El método sort() ordena los elementos de un array in situ y devuelve el array ordenado. Por defecto, ordena los elementos como cadenas en orden alfabético.
Sintaxis básica:
array.sort([compareFunction])Ordenar cadenas:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'mango', 'orange']Advertencia: Los números no se ordenan correctamente sin una función de comparación:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers); // [1, 100000, 21, 30, 4] (incorrect)La función de comparación devuelve:
- Un valor negativo si a debe ir antes que b
- Un valor positivo si b debe ir antes que a
- Cero si son iguales
Ordenar números correctamente:
// Ascending order
numbers.sort((a, b) => a - b);
// Descending order
numbers.sort((a, b) => b - a);Ordenar objetos:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// Sort by age
people.sort((a, b) => a.age - b.age);
// Sort by name alphabetically
people.sort((a, b) => a.name.localeCompare(b.name));Pruébalo tú mismo
function sortByLength(arr) {
return arr.sort((a, b) => {
// Escribe el código aquí
})
}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
1Strings en profundidad
Fundamentos de stringsIterar sobre stringsTemplate LiteralsMétodos de stringsResumen - String Weaver4JSON Parte 2
Iterar sobre JSONJSON anidadoEncadenamiento opcional en JSONCopia superficial y profundaResumen - Tienda de bicicletasResumen - Sistema solar7Sistema de Gestión de Biblioteca
Descripción general del proyectoAñadir libros10Gestionar el sistema del festival
Descripción general del proyectoAñadir películas y sedes2Arreglos multidimensionales
Conceptos básicos de arreglos 2DAcceso a elementos de arreglos 2DBucles anidados con arreglos 2DResumen - Arreglos 2DSuma y resta de matricesArreglos irregulares (Jagged Arrays)Arreglos 3D y más alláPatrones comunes en arreglos 2DResumen - Todo sobre arreglos5Conjuntos Parte 1
¿Qué es un conjunto?Iterar sobre conjuntosAñadir un elementoEliminar un elementoComprobar si un elemento existeTamaño y Is EmptyCopy y ClearResumen - Conceptos básicos de conjuntos8Temas interesantes de Arrays
Desestructuración de ArraysSintaxis Spread en ArraysArrays dispersosResumen - Taller de Arrays3JSON Parte 1
¿Qué es un JSON?Comprobar si existe una claveMétodos de objetoEl Spread Operator Parte 1El Spread Operator Parte 2Eliminar clavesResumen - Manipular claves de JSON