Kann jemand dies für mich überprüfen? JavaScript hat keine Version von strcmp (), daher müssen Sie Folgendes schreiben:
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
javascript
string
strcmp
Karel Bílek
quelle
quelle
Antworten:
Wie wäre es mit
quelle
localeCompare()
verhält sich manchmal in jedem Browser anders.Javascript hat es nicht, wie Sie betonen.
Eine schnelle Suche ergab:
von http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/
Natürlich können Sie bei Bedarf auch localeCompare hinzufügen:
Und
str1.localeCompare(str2)
überall verwenden, ohne sich Sorgen machen zu müssen, ob der lokale Browser mitgeliefert wurde. Das einzige Problem ist, dass Sie Unterstützung hinzufügen müsstenlocales
undoptions
wenn Sie sich dafür interessieren.quelle
==
verwendet wird und nicht,===
da letztere vermeiden Typumwandlung und damit ist diese Mikrosekunde schneller.var a = this.toUpperCase(); var b = str.toUpperCase(); return ((a == b) ? 0 : ((a > b) ? 1 : -1));
localeCompare()
ist langsam . Wenn Sie sich also nicht für die "richtige" Reihenfolge von Zeichenfolgen interessieren, die nicht aus Englisch stammen, versuchen Sie es mit Ihrer ursprünglichen Methode oder der saubereren:Dies ist eine Größenordnung schneller als
localeCompare()
auf meiner Maschine.Das
+
stellt sicher, dass die Antwort immer numerisch und nicht boolesch ist.quelle
(str1 > str2) - (str1 < str2)
Verwendung:
strcmp(string1, string2)
Ergebnis:
1
bedeutet, dass string1 größer ist,0
bedeutet gleich,-1
bedeutet , dass string2 größer ist.Dies hat eine höhere Leistung als
String.prototype.localeCompare
Auch
numeric:true
macht es tun logische Nummer Vergleichquelle
Wie wäre es mit:
Dann, um s1 mit 2 zu vergleichen:
quelle