Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-09-2007, 22:24   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 78
Array Elemente mit Nummern voran sortieren

Moin!

Ich habe in einem Array ein paar Elemente, die in etwa so aussehen:
Code:
1Hund
7Hamster
5Katze
2Ratte
Wie kann ich die nun sortieren, dass es numerisch aufsteigend im Array liegt? Also: 1Hund, 2Ratte, 5Katze, 7Hamster
Die sort Methode sortiert nur nach Buchstaben.

Geändert von Kempi (29-09-2007 um 22:25 Uhr)
Kempi ist offline   Mit Zitat antworten
Alt 29-09-2007, 22:30   #2 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 78
Ich habs schon!
Mit der Array.NUMERIC Methode, kein Problem...
Sorry, wegen der Threaderstellung!
Kempi ist offline   Mit Zitat antworten
Alt 30-09-2007, 17:49   #3 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Wenn du Array.sort() mit Array.NUMERIC aufrufst erwartet Flash Numerische werte im Array.

also "1Hund" usw sollte trotzdem Alphabetisch sortiert werden.
(ich denke "1" kommt trotzdem vor "2" allerdings dann auch "15" vor "2", weil das erste zeichen verglichen wird.

wenn du ein array mit solchen strings sortieren willst müsst du eine eigene vergleichs-funktion schreiben, die die ziffern am anfang extrahiert und die numerischen werte vergleicht.
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 30-09-2007, 18:27   #4 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
okay hab mal ein bisschen experimentiert:
ActionScript:
  1. array = ["1Hund", "7Hamster", "5Katze", "2Ratte"];
  2. trace(array);
  3. array.sort();
  4. trace(array);
liefert:
Code:
1Hund,7Hamster,5Katze,2Ratte
1Hund,2Ratte,5Katze,7Hamster
funzt also mit 1-stelligen ziffern

wenn ich z.B. "17Fisch" dran hänge kommt der ganz nach vorn, weil "17" vor "1H" kommt. Das gleiche Problem tritt bei der Verwendung von Array.NUMERIC auf!

so könnte man z.B. wirklich nach dem numerischen Wert sortieren:
ActionScript:
  1. var array = ["20zwanzig", "8acht", "1eins", "foo", "000null", "bar", "003drei", "15"];
  2.  
  3. trace(array);
  4. array.sort(vergleiche);
  5. trace(array);
  6.  
  7. //Vergleichsfunktion
  8. function vergleiche(s1, s2){
  9.     if(numPrefix(s1) > numPrefix(s2)){
  10.         return 1;
  11.     }else{
  12.         return -1;
  13.     }
  14. }
  15.  
  16. //Extrahiert numerischen Wert am Anfang eines Strings
  17. function numPrefix(str){
  18.     var i=0, char, num;
  19.    
  20.     while(i < str.length){
  21.         if(isNaN(str.substr(i, 1))) break;
  22.         i++;
  23.     }
  24.    
  25.     num = str.substr(0,i);
  26.    
  27.     if(num.length == 0)return -1;
  28.     else return Number(num);
  29. }

Strings ohne ziffern zu beginn werden an den anfang gestellt (weil numPrefix dann -1 zurückgibt)
__________________
Some Flash Worx

Geändert von Alphanimal (30-09-2007 um 18:30 Uhr)
Alphanimal ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele