Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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 Juli 2015.
DielocaleCompare() Methode vonString Werten gibt eine Zahl zurück, die angibt, ob diese Zeichenkette vor, nach oder gleich der angegebenen Zeichenkette in der Sortierreihenfolge kommt. In Implementierungen mit Unterstützung für dieIntl.Collator API delegiert diese Methode anIntl.Collator.
Beim Vergleich einer großen Anzahl von Zeichenketten, wie zum Beispiel beim Sortieren großer Arrays, ist es besser, einIntl.Collator Objekt zu erstellen und die von seinercompare() Methode bereitgestellte Funktion zu verwenden.
In diesem Artikel
Probieren Sie es aus
const a = "réservé"; // With accents, lowercaseconst b = "RESERVE"; // No accents, uppercaseconsole.log(a.localeCompare(b));// Expected output: 1console.log(a.localeCompare(b, "en", { sensitivity: "base" }));// Expected output: 0Syntax
localeCompare(compareString)localeCompare(compareString, locales)localeCompare(compareString, locales, options)Parameter
Die Parameterlocales undoptions passen das Verhalten der Funktion an und ermöglichen es Anwendungen, die Sprache anzugeben, deren Formatierungskonventionen verwendet werden sollen.
In Implementierungen, die dieIntl.Collator API unterstützen, entsprechen diese Parameter genau den Parametern desIntl.Collator() Konstruktors. Implementierungen ohneIntl.Collator Unterstützung sollten beide Parameter ignorieren, was dazu führt, dass das zurückgegebene Vergleichsergebnis vollständig von der Implementierung abhängt — es muss lediglichkonsistent sein.
compareStringDie Zeichenkette, mit der
referenceStrverglichen wird. Alle Werte werdenin Zeichenketten umgewandelt, daher führt das Auslassen oder Übergeben vonundefineddazu, dasslocaleCompare()mit der Zeichenkette"undefined"vergleicht, was selten erwünscht ist.localesOptionalEine Zeichenkette mit einemBCP 47-Sprachtag oder ein Array solcher Zeichenketten. Entspricht dem
localesParameter desIntl.Collator()Konstruktors.In Implementierungen ohne
Intl.CollatorUnterstützung wird dieser Parameter ignoriert und normalerweise die Locale des Hosts verwendet.optionsOptionalEin Objekt, das das Ausgabeformat anpasst. Entspricht dem
optionsParameter desIntl.Collator()Konstruktors.In Implementierungen ohne
Intl.CollatorUnterstützung wird dieser Parameter ignoriert.
Siehe denIntl.Collator() Konstruktor für Details zu denlocales undoptions Parametern und wie man sie verwendet.
Rückgabewert
Einenegative Zahl, wennreferenceStr vorcompareString steht;positiv, wennreferenceStr nachcompareString steht;0, wenn sie gleichwertig sind.
In Implementierungen mitIntl.Collator entspricht diesnew Intl.Collator(locales, options).compare(referenceStr, compareString).
Beschreibung
Gibt eine ganze Zahl zurück, die angibt, obreferenceStr vor, nach oder gleichwertig mitcompareString kommt.
- Negativ, wenn
referenceStrvorcompareStringsteht - Positiv, wenn
referenceStrnachcompareStringsteht - Gibt
0zurück, wenn sie gleichwertig sind
Warnung:Verlassen Sie sich nicht auf exakte Rückgabewerte von-1 oder1!
Negative und positive ganzzahlige Ergebnisse variieren zwischen Browsern (sowie zwischen Browser-Versionen), da die ECMAScript-Spezifikation nur negative und positive Werte vorschreibt. Einige Browser können-2 oder2 oder sogar 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"); // 0Ein Array sortieren
localeCompare() ermöglicht eine Groß- und Kleinschreibung ignorierende Sortierung eines Arrays.
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é']Browser-Unterstützung für erweiterte Argumente prüfen
Die Argumentelocales undoptions werden noch nicht in allen Browsern unterstützt.
Um zu prüfen, ob eine Implementierung sie unterstützt, verwenden Sie das"i" Argument (einErfordernis, dass ungültige Sprach-Tags abgelehnt werden) und suchen nach einerRangeError Ausnahme:
function localeCompareSupportsLocales() { try { "foo".localeCompare("bar", "i"); } catch (e) { return e.name === "RangeError"; } return false;}Verwendung von locales
Die Ergebnisse, die durchlocaleCompare() bereitgestellt werden, variieren zwischen den Sprachen. Um die Sortierreihenfolge der in der Benutzeroberfläche Ihrer Anwendung verwendeten Sprache zu erhalten, stellen Sie sicher, dass Sie diese Sprache (und möglicherweise einige Fallback-Sprachen) mit demlocales Argument angeben:
console.log("ä".localeCompare("z", "de")); // a negative value: in German, ä sorts before zconsole.log("ä".localeCompare("z", "sv")); // a positive value: in Swedish, ä sorts after zVerwendung von options
Die vonlocaleCompare() bereitgestellten Ergebnisse können mit demoptions Argument angepasst werden:
// in German, ä has a as the base letterconsole.log("ä".localeCompare("a", "de", { sensitivity: "base" })); // 0// in Swedish, ä and a are separate base lettersconsole.log("ä".localeCompare("a", "sv", { sensitivity: "base" })); // a positive valueNumerische 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")); // -1Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-string.prototype.localecompare> |
| ECMAScript® 2026 Internationalization API Specification> # sup-String.prototype.localeCompare> |