2011-02-13 59 views
1

我正在製作基於瀏覽器的遊戲,其中涉及到一張地圖。爲了渲染地圖,我使用兩個循環來從json集合中檢索地圖數據。 JSON集看起來像這樣(示例):檢索與循環相關的特殊JSON值

var map = { 
'y1':{'x1':{'type':'grass'}, 'x2':{'type':'water'}, 'x3':{'type':'grass'}}, 
'y2':{'x1':{'type':'grass'}, 'x2':{'type':'water'}, 'x3':{'type':'grass'}}, 
'y3':{'x1':{'type':'grass'}, 'x2':{'type':'water'}, 'x3':{'type':'grass'}}, 
'y4':{'x1':{'type':'grass'}, 'x2':{'type':'water'}, 'x3':{'type':'grass'}}, 
'y5':{'x1':{'type':'grass'}, 'x2':{'type':'water'}, 'x3':{'type':'grass'}} 
}; 

有兩個循環。一個帶有與Y軸相關的變量i和與X軸相關聯的變量ii。我怎樣才能得到像map.yi.xii.type這樣的標籤的json數據?我一直試圖這樣做幾天,但我對json很陌生,找不到任何答案。我的地圖代碼如下。任何幫助,將不勝感激。如果我不清楚,請讓我知道,我會盡力給出更好的解釋。

var create = ''; 
for(i=0; i <= 4; i++) 
{ 
    var hello="x1"; 
    create += '<table cellpadding="0" cellspacing="0"><tr>'; 
    for(ii=0; ii <= i; ii++){ 
     if(i==4 && ii==2){ 
      create += '<td class="'+map.y1.x1.type+'" align="center" valign="center"><img src="images/map/dot.gif"/></td>'; 
     } 
     else{ 
      create += '<td class="'+map.y1.x2.type+'"/>'; 
     } 
    } 
    create += '</tr></table>'; 
} 
for(x=4; x >= 0; x--) 
{ 
    create += '<table cellpadding="0" cellspacing="0"><tr>'; 
    for(xx=0; xx < x; xx++){ 
     create += '<td class="'+map.y1.x2.type+'"/>'; 
    } 
    create += '</tr></table>'; 
} 

Project Link.

+1

看起來像一個正常的JavaScript對象http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ – 2011-02-13 21:56:58

+0

請不要兩次提出問題 – 2011-02-13 22:00:03

回答

2

當你寫道:

map.yi.yii.type

我想你的意思是:

map.yi.xii.type

如果是這樣,你可以用方括號內串聯。

map['y'+i]['x'+ii].type; 

...因此,如果i == 1ii == 3,你會有效地做:

map.y1.x3.type; 
0

聽起來像是你需要做這樣的事情:

map[y+i][x+ii] 
+0

,我會在Firebug的 「Y沒有定義」=( – user440876 2011-02-12 21:24:36