Signatur
Beschreibung
resolvedOptions() zeigt, welche Einstellungen ein Intl.Collator tatsächlich verwendet. Das kann von den übergebenen Werten abweichen: Die Engine gleicht die gewünschten Locales mit den verfügbaren ab, ergänzt fehlende Optionen durch Standardwerte und übernimmt Unicode-Erweiterungen wie -u-kn-true oder -u-co-phonebk aus dem Locale-String.
Das zurückgegebene Objekt enthält diese Eigenschaften:
locale: der BCP-47-Tag der tatsächlich verwendeten Locale, einschließlich der unterstützten Unicode-Erweiterungenusage:"sort"oder"search"sensitivity:"base","accent","case"oder"variant"ignorePunctuation:trueoderfalsecollation: die Sortierart, z. B."default","phonebk"oder"pinyin"numeric:trueoderfalse(numerische Sortierung, „2“ vor „10“)caseFirst:"upper","lower"oder"false"(als String!)
Typische Einsatzfälle: Sie prüfen, ob die gewünschte Sprache wirklich unterstützt wird oder ob die Engine auf eine andere Locale ausgewichen ist. Sie protokollieren die Sortiereinstellungen beim Debuggen. Oder Sie übernehmen die Konfiguration eines Collators, um einen zweiten mit denselben Einstellungen zu erzeugen.
Rückgabewert
Beispiele
Standard-Optionen eines deutschen Collators anzeigen
const collator = new Intl.Collator('de');
console.log(collator.resolvedOptions());
Optionen aus Unicode-Erweiterung und Options-Objekt
// numeric per Erweiterung „kn“, sensitivity per Options-Objekt
const collator = new Intl.Collator('de-DE-u-kn-true', { sensitivity: 'base' });
const { locale, numeric, sensitivity } = collator.resolvedOptions();
console.log(locale, numeric, sensitivity);
console.log(['Datei10', 'datei2', 'Datei1'].sort(collator.compare));
Prüfen, ob die Engine auf eine andere Locale ausgewichen ist
const createCollator = (wanted) => {
const collator = new Intl.Collator(wanted);
const { locale } = collator.resolvedOptions();
if (!locale.toLowerCase().startsWith(wanted.split('-')[0].toLowerCase())) {
console.warn(`„${wanted}“ wird nicht unterstützt, verwende „${locale}“.`);
}
return collator;
};
createCollator('tlh'); // Klingonisch: in der Regel nicht verfügbar
Collator mit identischen Einstellungen nachbauen
const original = new Intl.Collator('sv', { sensitivity: 'accent', numeric: true });
const { locale, ...options } = original.resolvedOptions();
const kopie = new Intl.Collator(locale, options);
console.log(kopie.compare('a', 'A'), kopie.compare('a', 'ä'));
// Wichtig · Fallstricke
- Die Werte hängen von der Umgebung ab: Welche Locale ausgewählt wird und welche
collation-Werte verfügbar sind, bestimmt die ICU-Version der Engine. Die Ausgaben können sich zwischen Browsern, Node.js-Builds (z. B.small-icu) und Betriebssystemen unterscheiden. caseFirstist bei „keine Präferenz“ der String"false", nicht der boolesche Wertfalse. Ein Vergleich mit=== falseschlägt also fehl.- Laut Spezifikation sind
numericundcaseFirstnur vorhanden, wenn die Implementierung diese Optionen unterstützt. Alle aktuellen Engines liefern beide. - Der Standardwert von
ignorePunctuationhängt von der Locale ab. Für Thai (th) ist er zum Beispieltrue. - In
localeerscheinen nur unterstützte Unicode-Erweiterungen. Nicht erkannte oder durch das Options-Objekt überschriebene Erweiterungen fehlen, deshalb weicht der zurückgegebene Tag oft vom übergebenen ab. - Jeder Aufruf erzeugt ein neues Objekt. Rufen Sie die Methode in Schleifen, die viel Leistung brauchen, nicht bei jedem Durchlauf auf, sondern speichern Sie das Ergebnis zwischen.
- Wird die Methode auf einem Objekt aufgerufen, das kein
Intl.Collatorist (z. B. übercall), wirft sie einenTypeError.