2012-04-06 11 views
0

Ich bin meine Objektdaten Schleife, aber bekomme diesen undefinierten Wert.Kann nicht lesen Eigenschaft von undefined

Nicht sicher warum, aber hoffte, dass jemand erklären kann.

Meine Aufgabe ist es wie folgt aus:

//globally set 
var sdata = {"4":{"7":["1","7","3","3"]},"3":{"3":["2","8","1","1"]}}; 

Und i-Schleife das Objekt wie folgt:

function is_occupied(position) { 
    for (var x in sdata) { 
     for (var y in sdata) { 
      // error's here Cannot read property '2' of undefined 
      var ex = sdata[x][y][2] > position.block_width ? (sdata[x][y][2] + (sdata[x][y][2] - position.block_width)) : sdata[x][y][2], 
      var ey = sdata[x][y][3] > position.block_height ? (sdata[x][y][3] + (sdata[x][y][3] - position.block_height)) : sdata[x][y][3]; 
      if (position.x >= sdata[x][y][2] && position.x <= ex && position.y >= sdata[x][y][3] && position.y <= ey) { 
       alert('hit'); 
      } 
     } 
    } 
} 

Ich frage mich, warum es seine undefinierte sagen würde? =/Kann es nicht herausfinden. Es wird angenommen, dass er die Position [2] in den Array-Daten dieses Objekts erhält.

Antwort

6

Ich glaube, Sie Schleifen über sdata[x] werden soll, nicht sdata in Ihrer inneren Schleife:

function is_occupied(position) { 
    for(var x in sdata){ 
    for(var y in sdata[x]){ 
+0

Ah! Guter Ort, Sir! So war es! :) – Sir

Verwandte Themen