Sortering efter lokalitet
Sortér strenge korrekt med Intl.Collator.
Sortering efter lokalitet er en gratis JavaScript Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i JavaScript Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. JavaScript Academy-kurset indeholder 4 lektioner i alt.
Hvorfor standardsortering fejler
Arrayets sort() sammenligner strenge ud fra UTF-16-kodenheder. Derfor placeres store bogstaver før små, og accenter håndteres forkert — det er uegnet til lister, der skal læses af mennesker.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort()); // ["Apple","banana","cherry"] — capital winslocaleCompare
String.prototype.localeCompare sammenligner to strenge efter lokalitetens regler og returnerer en negativ værdi, nul eller en positiv værdi.
console.log("apple".localeCompare("banana")); // -1
console.log("banana".localeCompare("apple")); // 1Sortering med localeCompare
Giv den som sammenligningsfunktion for at få en rækkefølge, der er naturlig for mennesker.
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort((a, b) => a.localeCompare(b)));
// ["Apple", "banana", "cherry"] — case-insensitive orderingIntl.Collator
Ved sortering af mange elementer er Intl.Collator hurtigere: opret den én gang, og genbrug dens compare-metode.
const collator = new Intl.Collator("en-US");
const words = ["banana", "Apple", "cherry"];
console.log([...words].sort(collator.compare));Accenter og diakritiske tegn
Collatorer sorterer tegn med accenter korrekt efter lokaliteten i modsætning til sammenligning af kodenheder.
const words = ["zebra", "ela", "elf", "elan"];
const collator = new Intl.Collator("fr");
console.log([...words].sort(collator.compare));Følsomhed
sensitivity styrer, hvilke forskelle der betyder noget: "base" ignorerer store og små bogstaver samt accenter, "accent" ignorerer kun store og små bogstaver, og "variant" skelner mellem alt.
const c = new Intl.Collator("en", { sensitivity: "base" });
console.log(c.compare("apple", "APPLE")); // 0 (treated equal)Numerisk sortering
numeric: true sorterer indlejrede tal efter deres værdi, så "file2" kommer før "file10".
const files = ["file10", "file2", "file1"];
const c = new Intl.Collator("en", { numeric: true });
console.log([...files].sort(c.compare)); // ["file1","file2","file10"]Rækkefølge efter store og små bogstaver
caseFirst: "upper" eller "lower" afgør, om store bogstaver sorteres før små, når alle andre forskelle er ens.
const c = new Intl.Collator("en", { caseFirst: "upper" });
console.log(["b", "B", "a", "A"].sort(c.compare));Lokaliteten har betydning for rækkefølgen
Forskellige sprog sorterer alfabetisk på forskellige måder. På svensk sorteres visse bogstaver med accenter efter z, ikke i nærheden af a.
const words = ["z", "a", "o"];
console.log([...words].sort(new Intl.Collator("sv").compare));Søgning med usage
usage: "search" tilpasser collatoren til matchning i stedet for sortering — nyttigt til filtrering uden hensyn til accenter.
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")); // trueSortering af objekter
Brug collatoren på en nøgle, når du sorterer arrays med objekter.
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));Hurtigt tjek
Test lokalitetsafhængig sortering.
Opsummering: Lokalitetsafhængig sortering
Du så, hvorfor standard-sort() er forkert, brugte localeCompare og den hurtigere Intl.Collator, håndterede accenter, følsomhed, numerisk rækkefølge og rækkefølge efter store og små bogstaver, tog højde for lokalitetsspecifikke alfabeter og søgematchning. Det afslutter Intl-kurset.
Lær JavaScript med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 59
- Lektioner
- 200
Ofte stillede spørgsmål
Er lektionen “Sortering efter lokalitet” gratis?
Ja — alle 3 lektioner i læringssporet JavaScript Academy, inklusive “Sortering efter lokalitet”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. JavaScript Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Sortering efter lokalitet”?
Sortér strenge korrekt med Intl.Collator. Du øver dig i JavaScript Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på JavaScript Academy?
Der kræves ingen tidligere erfaring. JavaScript Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Sortering efter lokalitet”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne JavaScript Academy-lektion?
Ja. Alle JavaScript Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Formatering af tal og valuta
- Formatering af datoer og klokkeslæt
- Relativ tid og flertalsformer
- Sortering efter lokalitet