2012-04-06 160 views
0

我正在循環我的對象數據,但得到這個未定義的值。無法讀取undefined屬性

不知道爲什麼,但希望有人能解釋。

我的目標是這樣的:

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

而i循環這樣的對象:

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'); 
      } 
     } 
    } 
} 

我不知道爲什麼它會說,它的不確定? = /無法解決。它假設在該對象的數組數據中獲得位置[2]。

回答

6

我相信你想被遍歷sdata[x],在你的內部循環不sdata

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

啊!先生,好點!就這樣! :) – Sir 2012-04-06 02:23:30