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 July 2015.
Die localeCompare()
-Methode von String
-Werten gibt eine Zahl zurück, die angibt, ob dieser String im Sortierordnung vor, nach oder gleich dem angegebenen String kommt. In Implementierungen mit Unterstützung für die Intl.Collator
API delegiert diese Methode an Intl.Collator
.
Beim Vergleich einer großen Anzahl von Strings, wie z.B. beim Sortieren großer Arrays, ist es besser, ein Intl.Collator
-Objekt zu erstellen und die Funktion zu verwenden, die von der 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 Formatierungskonventionen verwendet werden sollen.
In Implementierungen, die die Intl.Collator
API unterstützen, entsprechen diese Parameter genau den Parametern des Intl.Collator()
-Konstruktors. Implementierungen ohne Unterstützung für Intl.Collator
werden aufgefordert, beide Parameter zu ignorieren, wodurch das zurückgegebene Vergleichsergebnis vollständig implementierungsabhängig ist – es muss nur konsistent sein.
compareString
-
Der String, gegen den
referenceStr
verglichen wird. Alle Werte werden zu Strings gezwungen, sodass das Auslassen oder Übergeben vonundefined
dazu führt, dasslocaleCompare()
mit dem String"undefined"
verglichen wird, was selten erwünscht ist. locales
Optional-
Ein String mit einem BCP 47-Sprachcode oder ein Array solcher Strings. Entspricht dem
locales
Parameter desIntl.Collator()
-Konstruktors.In Implementierungen ohne
Intl.Collator
-Unterstützung wird dieser Parameter ignoriert und die Locale des Hosts wird normalerweise verwendet. options
Optional-
Ein Objekt, das das Ausgabeformat anpasst. Entspricht dem
options
Parameter desIntl.Collator()
-Konstruktors.In Implementierungen ohne
Intl.Collator
-Unterstützung wird dieser Parameter ignoriert.
Siehe den Intl.Collator()
-Konstruktor für Details zu den Parametern locales
und options
und wie man sie verwendet.
Rückgabewert
Eine negative Zahl, wenn referenceStr
vor compareString
vorkommt; positiv, wenn referenceStr
nach compareString
vorkommt; 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 Ganzzahl zurück, die angibt, ob der referenceStr
vor, nach oder gleichwertig mit compareString
kommt.
- Negativ, wenn
referenceStr
vorcompareString
vorkommt - Positiv, wenn
referenceStr
nachcompareString
vorkommt - 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 ganzzahlige Ergebnisse variieren zwischen Browsern (sowie zwischen
Browserversionen), da die ECMAScript-Spezifikation nur negative und positive
Werte vorschreibt. Einige Browser können -2
oder 2
zurückgeben oder sogar einige andere
negative oder positive Werte.
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
Ein Array sortieren
localeCompare()
ermöglicht eine Groß- und Kleinschreibung-unabhängige 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 überprüfen
Die Argumente locales
und options
werden in noch nicht allen Browsern unterstützt.
Um zu überprüfen, ob eine Implementierung sie unterstützt, verwenden Sie das Argument "i"
(eine
Anforderung, dass illegale 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 locales
Die Ergebnisse, die von localeCompare()
bereitgestellt werden, variieren je nach Sprache. Um die Sortierreihenfolge der in der Benutzeroberfläche Ihrer Anwendung verwendeten Sprache zu erhalten,
geben Sie diese Sprache (und möglicherweise einige Ersatzsprachen) mit dem
locales
-Argument an:
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 options
Die Ergebnisse, die von localeCompare()
bereitgestellt werden, können mit dem
options
-Argument 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 |