2013-02-14 67 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