Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-04-2004, 12:17   #1 (permalink)
uzo
Neuer User
 
Registriert seit: Apr 2004
Ort: Ottobronx
Beiträge: 2
Question reihenfolge der elemente in objekten (als assoziatives array genutzt) umgedreht?

Hallo allerseits!
ich bin neu in actionscript und erlebe in actionscript ein merkwueriges verhalten welches ich nicht verstehe und welches mich behindert.
bitte, wenn jemand was dazu weiss, ich waere ueber jeden hinweis dankbar.

ich benutze ein objekt als assoziatives array. d.h. der index ist ein stringwert:
ActionScript:
  1. var a="eins"
  2. var b="zwei"
  3. var c="drei"
  4.  
  5. myObject = {}
  6. myObject[a]="a"
  7. myObject[b]="b"
  8. myObject[c]="c"
nun will ich in einer for-schleife durch meine daten iterieren, die reihenfolge im objekt ist aber entgegengesetzt zu der reihenfolge in der das objekt aufgebaut wurde:
ActionScript:
  1. for ( i in myObject)
  2.    trace(i)
produziert den folgenden output:
--
drei
zwei
eins
--
es scheint, als wuerde der actionscript interpreter meine neu dem objekt hinzugefuegten elemente am anfang des objekts hinzufuegen. ich erwartete, dass dies am ende geschieht.
natuerlich kann ich mir zig workarounds vorstellen um dieses problem zu umgehen, muss aber wissen was da genau los ist.
fuer mich ist gerade die genaue reihenfolge relevant und das oben geschilderte verhalten ein ausserordentliches problem.
hat jemand eine idee/die selbe erfahrung oder gar gegnteilige erfahrungen germacht?

gruss, uzo
uzo ist offline   Mit Zitat antworten
Alt 21-04-2004, 13:54   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
bei Flash scheint es generell so zu sein, dass for in von hinten anfängt. Allerdings ist das keine Regel, allgemein gilt: bei for in nicht auf irgendeine Reihenfolge verlassen.
Wenn eine Reihenfolge wichtig ist, dann musst du normale Arrays nehmen.
Du kannst auch die Reihenfolge in einem Array speicher, und dann darüber auf das Objekt zugreifen:

ActionScript:
  1. order = ["eins", "zwei", "drei"];
  2. obj = {eins:"a", zwei:"b", drei:"c"};
  3.  
  4. for(var i=0; i<order.length; i++)
  5. {
  6. trace(obj[order[i]]);
  7. }
Janoscharlipp ist offline   Mit Zitat antworten
Alt 21-04-2004, 14:26   #3 (permalink)
uzo
Neuer User
 
Registriert seit: Apr 2004
Ort: Ottobronx
Beiträge: 2
Thumbs up rawk-n-roll

vielen 1000 dank, Janoscharlipp!
so wie ich das sehe, ist das besser als jeder workaround den ich mir hab einfallen lassen.
Auch die gewissheit dass es nicht nur mir so geht oder ich was uebersehen habe, hilft mir viel weiter.
danke fuer Dein posting!
uzo 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 06:12 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele