0Pricing
JavaScript Academy · Aula

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 wins

localeCompare

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")); // 1

Ordenando 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 ordering

Intl.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")); // true

Ordenando 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

  1. Formatando números e moedas
  2. Formatando datas e horários
  3. Tempo relativo e plurais
  4. Ordenação de acordo com a localidade
← Voltar para JavaScript Academy