2013-07-04 58 views
0

在我有一個JSON OBJ時遍歷JSON數據時指數是不同的陣列

var myJsonObj = { 
       'key1' : { 
        'type' : 'key1 type', 
        'key1-1' : { 
         'type' : 'key1-1 type', 
         'data' : 'key1-1 value' 
        }, 
        'key1-2' : { 
         'type' : 'key1-2 type', 
         'data' : 'key1-2 value' 
        }, 
        'key1-3' : { 
         'type' : 'key1-3 type', 
         'key1-3-1' : { 
          'type' : 'key1-3-1 type', 
          'data' : 'key1-3-1 value' 
         }, 
         'key1-3-2' : { 
          'type' : 'key1-3-2 type', 
          'data' : 'key1-3-1 value' 
         }, 
         'key1-3-3': { 
          'type' : 'key1-3-3 type', 
          'key1-3-3-1' : { 
           'type' : 'key1-3-3-1 type', 
           'data' : 'key1-3-3-1 value' 
          }, 
          'key1-3-3-2' : { 
           'type' : 'key1-3-3-2 type', 
           'data' : 'key1-3-3-2 value' 
          } 
         } 
        } 
       } 
      }; 

我有索引的數組:

var index = new Array('key1', 'key1-3', 'key1-3-3'); 

如何從myJsonObj獲取數據時指數法是在索引變量中已知? 我想獲取myJsonObj['key1']['key1-3']['key1-3-3']的結果。如何實現輸出?

+0

使用'var index = ['key1','key1-3','key1-3-3'];'而不是Array構造函數 –

回答

2

你可以做到這一點:

myJsonObj[ index[0] ][ index[1] ][ index[2] ] 

或者,如果你想允許水平的變量數index

var tmpObj = myJsonObj; 
for (var i = 0; i < index.length; i++) 
    tmpObj = tmpObj[index[i]]; 

注意,在初始化與已知值的數組的最佳實踐是使用方括號的語法:

var index = ['key1', 'key1-3', 'key1-3-3']; 

還有there's no such thing as a JSON object

+0

謝謝你的完美答案。現在我還有一個問題。我需要將值作爲'key1-3-4'插入:{'type':'key1-3-4 type','key1-3-4-1':{'type':'key1-3-4-使用myJsonObj ['key1'] ['key1-3'] ['key1-3-3']處的索引變量也能反映這些變化的'1'類型','data':'key1-3-4-1 value'在myJson變量中 – h1m4l