Rolf B: Sortierreihenfolge beeinflussen

Beitrag lesen

Hallo Gunnar,

Nein, die Punkte werden nicht entfernt.

Werden sie auch nicht. Aber zunächst einmal ignoriert:

console.log("Buchse".localeCompare("Büchse"));
// 1
console.log("Büchse".localeCompare("Buchse"));
// -1

Die localeCompare-Funktion delegiert – so möglich – ihren Job an Intl.Collator und der verwendet per Default sensitivity:"variant" für den Vergleich. D.h. zuerst wird ein base-Vergleich gemacht (case-insensitive, accent-insensitive). Meldet der "unterschiedlich", ist das das Ergebnis von localCompare. Deshalb folgt "bude" IMMER hinter "büchse", egal wie groß oder klein man die Buchstaben schreibt.

Wenn man aus der Urzeit an Codepoint-basierende Vergleiche gewöhnt ist, dann ist das erstmal merkwürdig.

Vergleicht man "büchse" und "Büchse", so ist der base-Vergleich 0, der case-Vergleich ist bei mir -1 - niemand legt den caseFirst-Schalter fest, es könnte also implementierungsabhängig sein. Der accent-Vergleich ist wieder 0 (case-insensitive) und variant ist -1.

Das ist alles recht komplex…

Rolf

--
sumpsi - posui - obstruxi