O Método Sort
Parte da seção Lógica & Fluxo do Journey de JavaScript da Coddy — lição 57 de 65.
O método sort() permite que você ordene os elementos de um array no local e retorna o array ordenado. Por padrão, ele ordena os elementos como strings em ordem alfabética e ascendente.
Aqui está a sintaxe básica:
array.sort([compareFunction])Exemplo sem usar a função de comparação:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']AVISO: Números não são ordenados como esperado sem uma função de comparação:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (ordenação numérica incorreta)Para ordenar números corretamente ou implementar uma ordenação personalizada, você precisa usar uma função de comparação.
A função de comparação deve retornar:
- Um valor negativo se a deve vir antes de b
- Um valor positivo se b deve vir antes de a
- Zero se eles forem iguais
Veja como você ordenaria números usando uma função de comparação:
// Ordem crescente
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]// Ordem decrescente
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]Outro exemplo de como ordenar objetos:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// Ordenar por idade (crescente)
people.sort((a, b) => a.age - b.age);// Ordenar por nome (alfabeticamente use localeCompare())
people.sort((a, b) => a.name.localeCompare(b.name));Desafio
FácilCrie uma função chamada sortByLength que recebe um array de strings e retorna um novo array com as mesmas strings ordenadas por seu comprimento em ordem crescente. Se duas strings tiverem o mesmo comprimento, elas devem ser ordenadas alfabeticamente.
Folha de consulta
O método sort() ordena os elementos de um array no próprio local e retorna o array ordenado. Por padrão, ele ordena os elementos como strings em ordem alfabética.
Sintaxe básica:
array.sort([compareFunction])Ordenando strings:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'mango', 'orange']Aviso: Números não são ordenados corretamente sem uma função de comparação:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers); // [1, 100000, 21, 30, 4] (incorrect)A função de comparação retorna:
- Valor negativo se a deve vir antes de b
- Valor positivo se b deve vir antes de a
- Zero se forem iguais
Ordenando números corretamente:
// Ordem crescente
numbers.sort((a, b) => a - b);
// Ordem decrescente
numbers.sort((a, b) => b - a);Ordenando objetos:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// Ordenar por idade
people.sort((a, b) => a.age - b.age);
// Ordenar por nome em ordem alfabética
people.sort((a, b) => a.name.localeCompare(b.name));Experimente você mesmo
function sortByLength(arr) {
return arr.sort((a, b) => {
// Escreva o código aqui
})
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Strings em Profundidade
Fundamentos de StringsIterar sobre StringsTemplate LiteralsMétodos de StringRecapitulação - String Weaver4JSON Parte 2
Iterar sobre JSONJSON AninhadoEncadeamento Opcional em JSONCópia Rasa e ProfundaRecapitulação - Loja de BicicletasRecapitulação - Sistema Solar7Sistema de Gerenciamento de Biblioteca
Visão Geral do ProjetoAdicionando Livros10Gerenciar Sistema de Festival
Visão Geral do ProjetoAdicionar Filmes e Locais2Arrays Multidimensionais
Fundamentos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DRecapitulação - Arrays 2DAdição e Subtração de MatrizesArrays IrregularesArrays 3D e AlémPadrões Comuns de Arrays 2DRecapitulação - Tudo Sobre Arrays5Sets Parte 1
O que é um Set?Iterando sobre SetsAdicionando um elementoRemovendo um elementoVerificando se um elemento existeTamanho e Is EmptyCopy e ClearRecapitulação - O básico de Sets8Tópicos Interessantes sobre Arrays
Desestruturação de ArraysSintaxe Spread em ArraysArrays EsparsosRecapitulação - Workshop de Arrays3JSON Parte 1
O que é um JSON?Verificar se a Chave ExisteMétodos de ObjetoO Spread Operator Parte 1O Spread Operator Parte 2Remover ChavesRecapitulação - Manipular Chaves JSON