Bug oder Feature bei Array.sort()

FipsTheThief

Erfahrenes Mitglied
Also ich bastel eben an einer neuen Kalender Klasse für PHP und wollte diesmal ein wenig JavaScript mit einbringen.

Das Ziel war es , wenn ein Tag im Kalender per Mausklick markiert wird dann wird dieser gleich im Feld eingetragen als komplettes Datumsformat. Das ganze sollte dann auch für tagesgruppen passieren , wenn die Tage die angeklickt wurden nach einander kommen in der Reinfolge.

Also muss ich ja Array.sort() nutzen um die aktuellen Tage in der richtigen Reinfolge zu haben , da ich dann überprüfen kann , ist das Element 0 + 0,1,2,3,4 == dem ArrayWert x.
Doch nun passierte was lustiges:

Getestet mit dem Firefox.

mal so als kleine Demonstration:
Code:
            <script language="JavaScript">
            
            var NumberArray = new Array(10);
                
            setArray();
                
            function setArray()
                {
                    var x = 0;
                    for(i=10;i>0;i--)
                        {
                            NumberArray[x] = i;
                            x++;
                        }
                        
                    showArray();
                }
                
            function showArray()
                {
                    for(i =0;i <NumberArray.length;i++)
                        document.writeln(NumberArray[i]);
                        
                    NumberArray.sort();
                    document.writeln('<br>');
                    
                    for(i =0;i <NumberArray.length;i++)
                        document.writeln(NumberArray[i]);
                        
                    document.close();
                }
                
        </script>

Ausgabe ist wie folge danach :

10 9 8 7 6 5 4 3 2 1 vor dem Sortieren
1 10 2 3 4 5 6 7 8 9 nach dem Sortieren

Nennt mich blöde , aber nach meiner Ansicht nach sollte die 10 am Ende stehen und nicht gleich nach der 1 ;)

Gibt es da einen Weg wie man das richten kann ? Oder muss ich mir hier ebenfalls erstmal meine eigene kleine Funktion schreiben die mir Array Werte sortiert ?
 
Zuletzt bearbeitet:
Das ist kein Bug, das ist normal so.
Es wird nach Zeichen allgemein sortiert, und nicht nach Zahlen.... und da ist 10 nun mal kleiner als 2.

Schau mal bei SelfHTML rein... ich glaub, da ist im Abschnitt zu sort() eine kleine Hilfsfunktion, die numerisch sortiert.
 
Danke vielmals für die Antwort.

Ja das habe ich inzwischen auch gefunden , wobei mich das ganze doch arg verwundert hat an dieser Stelle.
 

Neue Beiträge

Zurück