k2o: spezifische unterschiede bei den for schleifen varianten

Hy,

kann mir jemand den genauen Unterschied zwischen einer "üblichen"
for-schleife --- for (i = 0; i < hallo.length; i++) --- und einer for-in-schleife --- for (i in hallo) --- erklären ?

Kann ich die beiden Schleifen-Varianten beliebig gegeneinander austauschen - und insbesondere: wo liegen die jeweiligen Vor- und Nachteile bei den beiden Schleifen-Varianten ?

Herzlichen Dank für alle Tips

K2o

  1. kann mir jemand den genauen Unterschied zwischen einer "üblichen"
    for-schleife --- for (i = 0; i < hallo.length; i++) --- und einer for-in-schleife --- for (i in hallo) --- erklären ?

    for( Befehl vorher; Bedingung; Befehl nachher){ Befehlsblock }
    ist etwas komplett andere als for(x in y)

    for in gibt läuft durch alle Attribute des Objektes y.

    Die normale Schleife:
    1. führt den Befehl vorher aus
    2. testet ob die Bedingung wahr ist wenn nein -> Abruch, sonst
    3. führt den Befehlsblock aus
    4. führt den Befehl nacher aus und springt zu 2

    Kann ich die beiden Schleifen-Varianten beliebig gegeneinander austauschen - und insbesondere: wo liegen die jeweiligen Vor- und Nachteile bei den beiden Schleifen-Varianten ?

    Sie haben nichts miteinander zu tun.

    Struppi.

  2. Hy K2o,

    kann mir jemand den genauen Unterschied zwischen einer "üblichen"
    for-schleife --- for (i = 0; i < hallo.length; i++) --- und einer for-in-schleife --- for (i in hallo) --- erklären ?

    bei for(i=0;array[i];i++){} wird davon ausgegangen, var array ist ein Datenfeld nummerischem Index.
    Beispiele:

    var array=new Array('ich','du','er','sie','es')
    var array=new Array()
    array[0]='ich'
    array[1]='du'
    array[2]='er'
    array[3]='sie'
    array[4]='es'

    bei for(v in array) wird dabei ausgegangen, var array ist ein Datenfeld assoziativem Index.
    Beispiel:

    var array=new Array()
    array['ich']='eddi'
    array['du'] ='K2o'

    Kann ich die beiden Schleifen-Varianten beliebig gegeneinander austauschen - und insbesondere: wo liegen die jeweiligen Vor- und Nachteile bei den beiden Schleifen-Varianten ?

    Nein; diese beiden Varianten einer for-Schleife lassen sich gegeneinander nicht austauschen, das liegt in der Sache des Index' begründet.

    for(v in array) dagegen kann alle Datenfelder durchlaufen.

    Gruß aus Berlin!
    eddi

    --
    wahsaga (http://forum.de.selfhtml.org/archiv/2004/9/90932/#m546295)
    > vielleicht könnte man für heteros eine "strict"-DTD zu grunde legen [...oder...] eine darauf anwendbare CSS-eigenschaft 'sex'
    In dem Sinne: Tassen hoch! Auf die Liebe zwischen Menschen! ;)
    1. bei for(v in array) wird dabei ausgegangen, var array ist ein Datenfeld assoziativem Index.

      Nein, nicht ganz.
      http://forum.de.selfhtml.org/archiv/2004/7/t85970/#m507487

      Es ist ein Object ohne irgendeinen Index. Der Indexoperator wird hier lediglich dazu verwendet um auf eine Eigenschaft des Objektes zuzugreifen. Es ist aber kein Index.

      Beispiel:

      var array=new Array()
      array['ich']='eddi'
      array['du'] ='K2o'

      Hier ist ein Array überflüssiger Ballast und es assoziert, dass es sich um ein Array handelt tut es aber in keinem Fall.
      Es reicht:
      var array =new Object();

      Struppi.

      1. Re:

        Nein, nicht ganz.
        http://forum.de.selfhtml.org/archiv/2004/7/t85970/#m507487

        Mist! Biste mir doch wirder auf die Schliche gekommen ;)

        Gruß aus Berlin!
        eddi

        --
        wahsaga (http://forum.de.selfhtml.org/archiv/2004/9/90932/#m546295)
        > vielleicht könnte man für heteros eine "strict"-DTD zu grunde legen [...oder...] eine darauf anwendbare CSS-eigenschaft 'sex'
        In dem Sinne: Tassen hoch! Auf die Liebe zwischen Menschen! ;)