Ordinamento dipendente dalla lingua
Ordini correttamente le stringhe con Intl.Collator.
Ordinamento dipendente dalla lingua è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 4 lezioni in totale.
Perché l'ordinamento predefinito non funziona
sort() degli array confronta le stringhe in base alle unità di codice UTF-16. In questo modo le maiuscole vengono prima delle minuscole e gli accenti sono gestiti male: non è adatto alle liste leggibili dagli utenti.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort()); // ["Apple","banana","cherry"] — capital winslocaleCompare
String.prototype.localeCompare confronta due stringhe usando le regole della locale e restituisce un valore negativo, zero o positivo.
console.log("apple".localeCompare("banana")); // -1
console.log("banana".localeCompare("apple")); // 1Ordinare con localeCompare
Lo passi come comparatore per ottenere un ordinamento naturale per gli utenti.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort((a, b) => a.localeCompare(b)));
// ["Apple", "banana", "cherry"] — case-insensitive orderingIntl.Collator
Per ordinare molti elementi, Intl.Collator è più veloce: lo crei una volta e riutilizzi il suo metodo compare.
const collator = new Intl.Collator("en-US");
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort(collator.compare));Accenti e segni diacritici
I collator ordinano correttamente i caratteri accentati in base alla locale, a differenza del confronto delle unità di codice.
const words = ["zebra", "ela", "elf", "elan"];
const collator = new Intl.Collator("fr");
console.log([...words].sort(collator.compare));Sensibilità
sensitivity controlla quali differenze contano: "base" ignora maiuscole e accenti, "accent" ignora solo le maiuscole, mentre "variant" distingue ogni differenza.
const c = new Intl.Collator("en", { sensitivity: "base" });
console.log(c.compare("apple", "APPLE")); // 0 (treated equal)Ordinamento numerico
numeric: true ordina i numeri contenuti nelle stringhe in base al loro valore, quindi "file2" viene prima di "file10".
const files = ["file10", "file2", "file1"];
const c = new Intl.Collator("en", { numeric: true });
console.log([...files].sort(c.compare)); // ["file1","file2","file10"]Ordinamento in base alle maiuscole
caseFirst: "upper" o "lower" stabilisce se le maiuscole devono venire prima delle minuscole quando le altre differenze sono uguali.
const c = new Intl.Collator("en", { caseFirst: "upper" });
console.log(["b", "B", "a", "A"].sort(c.compare));La locale conta per l'ordine
Lingue diverse ordinano alfabeticamente in modo diverso. In svedese, alcune lettere accentate vengono ordinate dopo la z, non vicino alla a.
const words = ["z", "a", "o"];
console.log([...words].sort(new Intl.Collator("sv").compare));Ricerca con usage
usage: "search" ottimizza il collator per la ricerca invece che per l'ordinamento, utile per filtrare ignorando gli accenti.
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")); // trueOrdinare gli oggetti
Usi il collator su una proprietà quando ordina array di oggetti.
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 rapida
Verifichi l'ordinamento in base alla locale.
Riepilogo: ordinamento in base alla locale
Ha visto perché il metodo predefinito sort() non è adatto, ha usato localeCompare e il più veloce Intl.Collator, gestito accenti, sensibilità, ordinamento numerico e per maiuscole, alfabeti specifici delle locale e ricerca. Con questo completa il corso su Intl.
Domande Frequenti
La lezione «Ordinamento dipendente dalla lingua» è gratuita?
Sì — il testo completo di «Ordinamento dipendente dalla lingua» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 4 lezioni in totale.
Cosa imparerò in «Ordinamento dipendente dalla lingua»?
Ordini correttamente le stringhe con Intl.Collator. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare JavaScript Academy?
Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Ordinamento dipendente dalla lingua»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?
Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Formattare numeri e valute
- Formattare date e orari
- Tempo relativo e plurali
- Ordinamento dipendente dalla lingua