Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-01-2005, 16:48   #1 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Array > reverse > for...in > ???

Hat das schon mal jemand probiert:
ActionScript:
  1. var a = new Array(1, 2, 3, 4, 5);
  2. a = a.reverse();
  3. for(var i in a) {
  4.   trace(a[i]);
  5. }
Die Ausgabe liefert:
2
4
1
5
3

Wasndalos...?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 12-01-2005, 16:55   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Die Reihenfolge von for-in ist nicht festgelegt.
Das gleiche passiert übrigens bei sort.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 12-01-2005, 16:56   #3 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
nimm besser:

PHP-Code:
for(var i:Number 0i<a.lengthi++){
    
trace(a[i]);

(bei mx musst du wohl das :Number weglassen)

Geändert von mojave (12-01-2005 um 16:57 Uhr)
mojave ist offline   Mit Zitat antworten
Alt 12-01-2005, 17:01   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hehe, Herr bokel, ich wusste doch, dass genau Sie drauf antworten würden...

Danke!

Aaaaber: Wenn ich das Array nicht umdrehe, wird mit for...in ganz normal getraced - nämlich von hinten nach vorne (5 4 3 2 1).

(Wenn ich mich nicht irre, ist ein Array doch eine Art LIFO-Stack, und somit durchläuft for...in _eigentlich_ den Stapel von oben nach unten... oder?)

@mojave: auch danke, aber das for...in hat (normalerweise) schon seinen Sinn...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (12-01-2005 um 17:02 Uhr)
sonar ist offline   Mit Zitat antworten
Alt 12-01-2005, 17:04   #5 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Intern ist ein Array ein Objekt. Und die Reihenfolge der Elemente ist bei einem Objekt nicht festgelegt. Beim aktuellen Flashplayer is es so, dass for-in die Elemente in der Reihenfolge ihrer Erzeugung ausgibt. Zufällig entspricht das dem Rückwärtsdurchlaufen eines Arrays. Darauf verlassen kann man sich aber nicht, wie man an deinem Beispiel oben sieht.

Die Lösung von mojave ist die saubere, da kann dir nichts passieren.

mfg. r

Geändert von bokel (12-01-2005 um 17:10 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 12-01-2005, 17:11   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Aha, seltsam... danke. Das hab ich mir anders vorgestellt... (wie würde Freund kelor sagen: *koppkratz*)
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 12-01-2005, 17:18   #7 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
nimm while ohne reverse..
ActionScript:
  1. a = [1, 2, 3, 4, 5];
  2. //a.reverse();
  3.  
  4. i=a.length;
  5.  
  6. while(--i >=0){
  7.       trace(a[i]);
  8. }

oder halt doch..

ActionScript:
  1. a = [1, 2, 3, 4, 5];
  2. a.reverse();
  3.  
  4. i=0;
  5.  
  6. while(i<a.length){
  7.       trace(a[i]);
  8.           i++;
  9. }


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 12-01-2005, 17:26   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
OK, Chef...
Thx!
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 12-01-2005, 17:41   #9 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
vielleicht noch bischen verstrickter

PHP-Code:
function foreach( a)
{
    var 
keys = new Array();
    for (var 
i in akeys.push);
    
    var 
order keys.sort(Array.RETURNINDEXEDARRAY);
    var 
order.length;
    
    while( --
> -1)
    {
        
f(order[i], a[order[i]]);
    }
    
}


var 
test = function(keyvalue)
{
    
trace(key ' - ' value);
}
var 
arr = [0,1,2,3,4,5];

foreach(
arrtest); 
__________________
elias ist offline   Mit Zitat antworten
Alt 12-01-2005, 17:46   #10 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ach du spinnst doch, elias...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 12-01-2005, 18:08   #11 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
ich fang doch erst an
wie wärs damit...

PHP-Code:
class Foreach
{
    var 
scope;
    var 
obj;
    var 
order;
    var 
pnt;
    
    function Foreach(
so)
    {
        
scope s;
        
obj o;
        
        var 
keys = new Array();
        for (var 
i in objkeys.push);
        
        
order keys.sort( Array.RETURNINDEXEDARRAY );
        
pnt order.length;
    
    }
    
    function 
next()
    {
        if (--
pnt > -1)
        {
            
scope['key']   = order[pnt];
            
scope['value'] = obj[order[pnt]];
            
            return 
true;
        }
        return 
false;
    }

---- USAGE ----

PHP-Code:
var arr = [0,1,2,3,4,5];
var 
fe:Foreach = new Foreach(thisarr);

while( 
fe.next() )
{
    
trace(key ' -' value);

__________________
elias ist offline   Mit Zitat antworten
Alt 12-01-2005, 19:59   #12 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ja das hätt ich auch noch hinbekommen...





























__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 12-01-2005, 20:43   #13 (permalink)
flachzange
 
Benutzerbild von elias
 
Registriert seit: Jun 2003
Ort: berlin
Beiträge: 3.932
bischen dirrrty umgesetzt aber praktisch
__________________
elias 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 11:42 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele