2013-02-14 65 views
3

我有這樣一個JSON數據JSON多維數組,混亂的循環使用jQuery

var menuItems = { 
    data: 
    {   
     dataA: 
     { 
      cmClass: "classA", 
      cmID: "a", 
      properties: [ 
       { cId: 'testa', cClass: 'edit', aId: 'sa', text: 'sample a' }, 
       { cId: 'testaa', cClass: 'cut', aId: 'saa', text: 'sample aa' }     
      ] 
     }, 
     dataB: 
     { 
      cmClass: "classB", 
      cmID: "b", 
      properties: [ 
       { cId: 'testb', cClass: 'edit', aId: 'sb', text: 'sample b' }, 
       { cId: 'testbb', cClass: 'cut', aId: 'sbb', text: 'sample bb' }, 
       { cId: 'testbbb', cClass: 'copy', aId: 'sbbb', text: 'sample bbb' }, 
      ] 
     } 
    } 
}; 

我想遍歷所有數據,並創建一個無序列表出來。因此,對於測試IM具有以下的jquery,

$.each(menuItems.data, function (i) { 
    $.each(this, function (key, value) { 
    { 
     alert(key + " : " + value); 
     if (key == "properties") { 
      $.each(value, function (key1, value1) { 
       alert(key1 + " : " + value1); 
      }) 
     } 
    } 
    });   
}); 

第一警報被適當地表示爲「cmClass:CLASSA」,「CMID:一」等,但第二環路它總是給予「0:[對象對象]「,」1:[對象對象]「等,我在這裏堅持,我嘗試了不同的情況下,但似乎沒有任何工作。 json數據有什麼問題嗎?任何人都可以幫忙嗎?我卡在這裏

+1

如果使用'console.log'而不是'alert',則更易於調試。 – 2013-02-14 09:39:30

+0

thx ..這是一個很好的...但實際問題的解決方案? – Reuben 2013-02-14 09:42:42

回答

2

你在對象上循環,因此你需要在$ each中做另一個循環。

$.each(menuItems.data, function (i) { 
    $.each(this, function (key, value) { 
    { 
     console.log(key + " : " + value); 
     if (key == "properties") { 
      $.each(value, function (key1, value1) { 
       for(k in value1) { 
        console.log(key1 + ':' + k + ':' + value1[k]); 
       } 
      }) 
     } 
    } 
    }); 
}); 
+0

gr8 ..工程像魅力.. Thx .. – Reuben 2013-02-14 09:50:02

+0

只是一個疑問,我如何訪問像cmClass,cmId而不是一般從變量訪問? – Reuben 2013-02-14 10:03:47

+0

@Reuben當你知道父鍵你可以做到這一點:menuItems.data.dataA.cmClass – 2013-02-14 10:06:19