Don P: objekt erwartet :-(

Beitrag lesen

Hallo,

»» for(var i = 0; i in array; i++) {
»» (bricht auch ab, sobald array[i]==false gilt)

Nein, bricht nicht ab.

Stimmt, nicht wirklich wenn array[i]==false, aber wenn ein Array-Element gar nicht befüllt ist, dann schon:

  
var a = new Array(3);              // Array mit 3 Elementen  
for (var i=0; i in a; alert(i++)); // gibt nichts aus  

aber:

  
var a = new Array(3);              // Array mit 3 Elementen  
a[0]='wert1';                      // Erstes Element befüllen  
for (var i=0; i in a; alert(i++)); // gibt nur 0 aus  

und:

  
var a = new Array(3);              // Array mit 3 Elementen  
a[0]='wert1';                      // 1. Element befüllen  
a[2]='wert3';                      // 3. Element befüllen  
for (var i=0; i in a; alert(i++)); // gibt ebenfalls nur 0 aus  

Beim fehlenden 2. Array-Element bricht die Schleife ab, hier dagegen nicht:

  
var a = new Array(3);                  // Array mit 3 Elementen  
a[0]='wert1';                          // 1. Element befüllen  
a[2]='wert3';                          // 3. Element befüllen  
for (var i=0; i<a.length; alert(i++)); // gibt 0,1 und 2 aus  

Und hier auch nicht:

  
var a = new Array(3);                  // Array mit 3 Elementen  
for (var i=0; i<a.length; alert(i++)); // gibt 0,1 und 2 aus  

»» oder gar – als Krönung

array.forEach(function (elem) { ... }) ;)

Klar, falls Array.forEach implementiert ist.

forEach arbeitet auch nur mit den befüllten Array-Elementen:

  
var a = new Array(3);                     // Array mit 3 Elementen  
a.forEach( function(e,i,a){alert(i++)} ); // gibt nichts aus  

Gruß, Don P