String.prototype.localeCompare()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
Die localeCompare()
-Methode von String
-Werten gibt eine Zahl zurück, die angibt, ob dieser String vor, nach oder gleich dem angegebenen String in der Sortierreihenfolge kommt. In Implementierungen mit Unterstützung für die Intl.Collator
-API delegiert diese Methode an Intl.Collator
.
Beim Vergleich großer Mengen von Strings, wie beim Sortieren großer Arrays, ist es besser, ein Intl.Collator
-Objekt zu erstellen und die Funktion zu verwenden, die von dessen compare()
-Methode bereitgestellt wird.
Probieren Sie es aus
const a = "réservé"; // With accents, lowercase const b = "RESERVE"; // No accents, uppercase console.log(a.localeCompare(b)); // Expected output: 1 console.log(a.localeCompare(b, "en", { sensitivity: "base" })); // Expected output: 0
Syntax
localeCompare(compareString) localeCompare(compareString, locales) localeCompare(compareString, locales, options)
Parameter
Die Parameter locales
und options
passen das Verhalten der Funktion an und lassen Anwendungen die Sprache angeben, deren Formatierungsregeln verwendet werden sollen.
In Implementierungen, die die Intl.Collator
-API unterstützen, entsprechen diese Parameter genau den Parametern des Konstruktors Intl.Collator()
. Implementierungen ohne Intl.Collator
-Unterstützung werden angewiesen, beide Parameter zu ignorieren, wodurch das zurückgegebene Vergleichsergebnis vollständig implementierungsabhängig wird — es muss lediglich konsistent sein.
compareString
Der String, mit dem
referenceStr
verglichen wird. Alle Werte werden in Strings umgewandelt, sodass das Weglassen oder Übergeben vonundefined
dazu führt, dasslocaleCompare()
mit dem String"undefined"
vergleicht, was selten gewünscht ist.locales
OptionalEin String mit einem BCP 47-Sprachcode oder ein Array solcher Strings. Entspricht dem
locales
-Parameter desIntl.Collator()
-Konstruktors.Bei Implementierungen ohne Unterstützung für
Intl.Collator
wird dieser Parameter ignoriert und normalerweise die Locale des Hosts verwendet.options
OptionalEin Objekt, das das Ausgabeformat anpasst. Entspricht dem
options
-Parameter desIntl.Collator()
-Konstruktors.Bei Implementierungen ohne Unterstützung für
Intl.Collator
wird dieser Parameter ignoriert.
Weitere Einzelheiten zu den Parametern locales
und options
und deren Verwendung finden Sie im Intl.Collator()
-Konstruktor.
Rückgabewert
Eine negative Zahl, wenn referenceStr
vor compareString
auftritt; positiv, wenn referenceStr
nach compareString
auftritt; 0
, wenn sie gleichwertig sind.
In Implementierungen mit Intl.Collator
ist dies gleichbedeutend mit new Intl.Collator(locales, options).compare(referenceStr, compareString)
.
Beschreibung
Gibt eine ganze Zahl zurück, die angibt, ob referenceStr
vor, nach oder gleichwertig zum compareString
ist.
- Negativ, wenn
referenceStr
vorcompareString
auftritt - Positiv, wenn
referenceStr
nachcompareString
auftritt - Gibt
0
zurück, wenn sie gleichwertig sind
Warnung: Verlassen Sie sich nicht auf die genauen Rückgabewerte von -1
oder 1
!
Negative und positive Ganzzahl-Ergebnisse variieren zwischen Browsern (sowie zwischen Browserversionen), da die ECMAScript-Spezifikation nur negative und positive Werte vorschreibt. Einige Browser können -2
oder 2
oder sogar einige andere negative oder positive Werte zurückgeben.
Beispiele
Verwendung von localeCompare()
// The letter "a" is before "c" yielding a negative value "a".localeCompare("c"); // -2 or -1 (or some other negative value) // Alphabetically the word "check" comes after "against" yielding a positive value "check".localeCompare("against"); // 2 or 1 (or some other positive value) // "a" and "a" are equivalent yielding a neutral value of zero "a".localeCompare("a"); // 0
Sortieren eines Arrays
localeCompare()
ermöglicht eine Groß-/Kleinschreibung-unabhängige Sortierung für ein Array.
const items = ["réservé", "Premier", "Cliché", "communiqué", "café", "Adieu"]; items.sort((a, b) => a.localeCompare(b, "fr", { ignorePunctuation: true })); // ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
Überprüfen der Browserunterstützung für erweiterte Argumente
Die Argumente locales
und options
werden noch nicht in allen Browsern unterstützt.
Um zu überprüfen, ob eine Implementierung diese unterstützt, verwenden Sie das "i"
-Argument (eine Anforderung, dass ungültige Sprachcodes abgelehnt werden) und suchen Sie nach einer RangeError
-Ausnahme:
function localeCompareSupportsLocales() { try { "foo".localeCompare("bar", "i"); } catch (e) { return e.name === "RangeError"; } return false; }
Verwendung von Sprachumgebungen
Die von localeCompare()
bereitgestellten Ergebnisse variieren zwischen Sprachen. Um die Sortierreihenfolge der Sprache zu erhalten, die in der Benutzeroberfläche Ihrer Anwendung verwendet wird, stellen Sie sicher, dass Sie diese Sprache (und möglicherweise einige Ausweichsprachen) mit dem Argument locales
angeben:
console.log("ä".localeCompare("z", "de")); // a negative value: in German, ä sorts before z console.log("ä".localeCompare("z", "sv")); // a positive value: in Swedish, ä sorts after z
Verwendung von Optionen
Die von localeCompare()
bereitgestellten Ergebnisse können mit dem Argument options
angepasst werden:
// in German, ä has a as the base letter console.log("ä".localeCompare("a", "de", { sensitivity: "base" })); // 0 // in Swedish, ä and a are separate base letters console.log("ä".localeCompare("a", "sv", { sensitivity: "base" })); // a positive value
Numerische Sortierung
// by default, "2" > "10" console.log("2".localeCompare("10")); // 1 // numeric using options: console.log("2".localeCompare("10", undefined, { numeric: true })); // -1 // numeric using locales tag: console.log("2".localeCompare("10", "en-u-kn-true")); // -1
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-string.prototype.localecompare |
ECMAScript® 2026 Internationalization API Specification # sup-String.prototype.localeCompare |