Dieses einfache Javascript
%Vor% erzeugt die Ergebnisse:
11.17, 2.73, 3.12
anstelle von 2.73, 3.12, 11.17
.
Warum ist das und wie kann ich es beheben?
Vielen Dank im Voraus!
Dazwischen sagen die vorhandenen Antworten alles aus, aber keiner von ihnen erwähnt beide Probleme in Ihrem Code. Hier ist die vollständige Antwort:
Die Sortierung funktioniert nicht, weil die Standardsortierung lexikalisch ist (d. h. die Arrayelemente werden in Zeichenfolgen konvertiert und alphabetisch verglichen). Sie können eine eigene Vergleichsfunktion für sort()
bereitstellen:
Zweitens, for...in
sagt Ihnen eigentlich nichts Konkretes darüber, ob Ihr Array korrekt sortiert ist, weil die Aufzählung von for...in
nicht definiert ist (obwohl die meisten, aber nicht alle Browser weitgehend das tun, was Sie erwarten würden). Verwenden Sie stattdessen eine for
-Schleife (wie Sie normalerweise für Arrays tun sollten):
Sie werden nicht richtig iteriert. Es sollte sein:
%Vor% Wenn Sie for..in
in Javascript verwenden, durchläuft dies die Eigenschaften des Objekts und die Reihenfolge der Iteration ist nicht definiert. Sie sollten auch einige seltsame Ausgaben sehen, so wie alle Funktionen, die in der Array-Klasse definiert sind.
Tags und Links javascript arrays sorting