Intl.Collator în JavaScript

Formatare regională (Intl) Toate browserele moderne, Node.js

Compară și sortează texte după alfabetul unei limbi; varianta rapidă a lui localeCompare.

Sintaxă
const c = new Intl.Collator("ro", optiuni);
lista.sort(c.compare)

Ce face Intl.Collator

compare(a, b) returnează un număr negativ, zero sau pozitiv, deci poate fi dat direct lui sort: lista.sort(colator.compare). Funcția este deja legată de colator, nu trebuie bind.

Opțiuni utile: sensitivity ("base" ignoră majusculele), numeric: true (sortează „fișier2” înaintea lui „fișier10”), caseFirst: "upper", ignorePunctuation. resolvedOptions și supportedLocalesOf funcționează ca la celelalte obiecte Intl.

Parametri

Parametru Descriere
limba Opțional. Codul limbii, de exemplu "ro".
optiuni Opțional. sensitivity, numeric, caseFirst, usage ("sort" sau "search").

Ce returnează

Un obiect colator.

Exemple

Exemplul 1: Sortare românească și numerică

const ro = new Intl.Collator("ro");
console.log(["țară", "tată", "șase", "sare", "înot", "inel"].sort(ro.compare));

const fisiere = new Intl.Collator("ro", { numeric: true });
console.log(["poza10.jpg", "poza2.jpg", "poza1.jpg"].sort(fisiere.compare));

Rezultat

[ 'inel', 'înot', 'sare', 'șase', 'tată', 'țară' ]
[ 'poza1.jpg', 'poza2.jpg', 'poza10.jpg' ]

Exemplul 2: Căutare fără majuscule

const c = new Intl.Collator("ro", { sensitivity: "base" });

console.log(c.compare("Brașov", "BRAȘOV"), c.compare("Brașov", "Brasov") !== 0);
console.log(c.resolvedOptions().sensitivity, Intl.Collator.supportedLocalesOf("ro-MD"));

Rezultat

0 true
base [ 'ro-MD' ]

Greșeli frecvente

  • Sortezi cu sort() fără funcție un tablou cu nume românești: literele cu diacritice ajung la final.

Comenzi înrudite

  • String.prototype.localeCompare: Compară două texte după regulile alfabetului unei limbi; util la sortarea cu diacritice.
  • sort: Ordonează elementele unui tablou. Modifică tabloul original.
  • Array.prototype.toSorted: Returnează o copie sortată a tabloului, fără să modifice originalul.