spezifische unterschiede bei den for schleifen varianten
k2o
- javascript
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
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.
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
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.
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