Ordenação de acordo com a localidade
Ordene strings corretamente com Intl.Collator.
Ordenação de acordo com a localidade é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 4 aulas no total.
Por que a ordenação padrão falha
sort() de uma matriz compara textos por unidades de código UTF-16. Isso coloca letras maiúsculas antes de minúsculas e trata os acentos de forma incorreta — um resultado inadequado para listas legíveis.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort()); // ["Apple","banana","cherry"] — capital winslocaleCompare
String.prototype.localeCompare compara duas cadeias de texto usando as regras da localidade e retorna um valor negativo, zero ou positivo.
console.log("apple".localeCompare("banana")); // -1
console.log("banana".localeCompare("apple")); // 1Ordenando com localeCompare
Passe-o como comparador para obter uma ordenação adequada para as pessoas.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort((a, b) => a.localeCompare(b)));
// ["Apple", "banana", "cherry"] — case-insensitive orderingIntl.Collator
Para ordenar muitos itens, Intl.Collator é mais rápido: crie-o uma vez e reutilize seu método compare.
const collator = new Intl.Collator("en-US");
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort(collator.compare));Acentos e sinais diacríticos
Os comparadores ordenam corretamente os caracteres acentuados de acordo com a localidade, ao contrário da comparação por unidades de código.
const words = ["zebra", "ela", "elf", "elan"];
const collator = new Intl.Collator("fr");
console.log([...words].sort(collator.compare));Sensibilidade
sensitivity controla quais diferenças importam: "base" ignora maiúsculas, minúsculas e acentos, "accent" ignora apenas maiúsculas e minúsculas, e "variant" diferencia todos os aspectos.
const c = new Intl.Collator("en", { sensitivity: "base" });
console.log(c.compare("apple", "APPLE")); // 0 (treated equal)Ordenação numérica
numeric: true ordena números inseridos nos textos pelo valor, fazendo com que "file2" venha antes de "file10".
const files = ["file10", "file2", "file1"];
const c = new Intl.Collator("en", { numeric: true });
console.log([...files].sort(c.compare)); // ["file1","file2","file10"]Ordenação com caseFirst
caseFirst: "upper" ou "lower" determina se as letras maiúsculas serão ordenadas antes das minúsculas quando as outras diferenças forem iguais.
const c = new Intl.Collator("en", { caseFirst: "upper" });
console.log(["b", "B", "a", "A"].sort(c.compare));A localidade importa na ordenação
Idiomas diferentes organizam as palavras em ordem alfabética de maneiras diferentes. Em sueco, certas letras acentuadas são ordenadas depois de z, e não perto de a.
const words = ["z", "a", "o"];
console.log([...words].sort(new Intl.Collator("sv").compare));Pesquisa com uso
usage: "search" ajusta o comparador para correspondências, em vez de ordenação — útil para filtrar sem diferenciar acentos.
const c = new Intl.Collator("en", { usage: "search", sensitivity: "base" });
function matches(a, b) { return c.compare(a, b) === 0; }
console.log(matches("cafe", "CAFE")); // trueOrdenando objetos
Use o comparador em uma chave ao ordenar matrizes de objetos.
const people = [{ name: "Bob" }, { name: "alice" }, { name: "Carol" }];
const c = new Intl.Collator("en");
console.log(people.sort((a, b) => c.compare(a.name, b.name)).map((p) => p.name));Verificação rápida
Teste a ordenação por localidade.
Recapitulação: ordenação por localidade
Você viu por que sort() padrão está incorreto, usou localeCompare e o mais rápido Intl.Collator, trabalhou com acentos, sensibilidade, ordenação numérica e por maiúsculas e minúsculas, alfabetos específicos de cada localidade e correspondência em pesquisas. Isso conclui o curso de internacionalização.
Perguntas Frequentes
A aula “Ordenação de acordo com a localidade” é grátis?
Sim — o texto completo de “Ordenação de acordo com a localidade” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 4 aulas no total.
O que vou aprender em “Ordenação de acordo com a localidade”?
Ordene strings corretamente com Intl.Collator. Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar JavaScript Academy?
Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Ordenação de acordo com a localidade”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de JavaScript Academy?
Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Formatando números e moedas
- Formatando datas e horários
- Tempo relativo e plurais
- Ordenação de acordo com a localidade