Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-09-2005, 22:09   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 24
arrays ordnen

hi, ich habe ein array mit zahlenwerten, das ich nach zahlengrösse ordenen möchte. nun haben aber nicht alle elemente des arrays eine zahl. gewisse haben den wert NaN (für "not a number"). wenn ich das array nun mit sort.on folgendermassen ordne:
ActionScript:
  1. countries.sort(function (a, b) { return a.gdp<b.gdp; });
dann wird das array zwar der grösse nach geordnet, aber die elemente mit dem wert NaN werden nicht an den schluss gesetzt, sondern stehen vornehmlich am anfang. nun ist es aber sehr wichtig für mein programm, dass am anfang des geordneten arrays ein zahlenwert steht. wie mache ich das am besten?
vielen dank für allfällige lösungsvorschläge!
diplomkandidat ist offline   Mit Zitat antworten
Alt 19-09-2005, 22:17   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Die Sortierfunktion anderst schreiben oder am ende nocheinmal alle Nan's "abschneiden" und hinten wieder einfügen ( wenn benötigt ).
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 19-09-2005, 22:30   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 24
wie könnte ich denn die sortierfunktion anders schreiben, so dass sie gleich von anfang an alle elemente mit dem wert NaN an den schluss setzt? sie also quasi als kleinster zahlenwert interpretiert...
vielen dank!
diplomkandidat ist offline   Mit Zitat antworten
Alt 19-09-2005, 22:34   #4 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Ich würde mir einmal gedanken machen warum überhaupt NaN Werte im Array sind. Die sind normalerweise das Ergebnis von "unbehandelten Ausnahmen" (Division durch 0 etc.)

Wenn du explizit einen Ausnahmewert angeben möchtest, gibts dafür "null".
NaN ist ein Fehler, der zu beheben ist.

Außerdem ergibt dein Code (bei mir) eine Sortierung mit den NaN Werten am Schluss!

ActionScript:
  1. array = [{gdp:1},{gdp:4},{gdp:Number.NaN},{gdp:2},{gdp:7}, {gdp:Number.NaN}];
  2. sorted = array.sort(function (a, b) { return a.gdp<b.gdp; });
  3. for(i=0;i<sorted.length;i++)trace(sorted[i].gdp);
  4. /*Ausgabe:
  5. 7
  6. 4
  7. 2
  8. 1
  9. NaN
  10. NaN
  11. */
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 19-09-2005, 22:43   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 24
komisch. eigentlich wär das ja auch logisch, aber bei mir sind die nicht am schluss. den wert NaN habe ich so eingegeben. ich habe einfach ein langes array.
ActionScript:
  1. gdp = [54236, 124356, NaN, 3254, etc.];
NaN ist bei mir einfach eine variable, die einen fehlenden wert bezeichnet...
diplomkandidat ist offline   Mit Zitat antworten
Alt 20-09-2005, 07:32   #6 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
um einen fehlenden Wert zu markieren nimmt man "null"... vl gehts mit null?
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 20-09-2005, 08:57   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 24
na, mit null erhalte ich dann infinity werte, die dann wieder ganz ungeschickt sind...
diplomkandidat ist offline   Mit Zitat antworten
Alt 20-09-2005, 16:21   #8 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
dann versuch mal das NaN in der Sort-Funktion explizit als "Größer als alles andere" auszugrenzen...

ActionScript:
  1. function compare(a, b){
  2.     if(isNaN(a))return 1;
  3.     else return a>b;
  4. }
__________________
Some Flash Worx
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 13:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele