使用jQuery迭代维JSON数组

时间:2014-10-03 20:06:36

标签: jquery arrays json

这可能更像是一个建议/最佳实践问题,但我想知道循环通过一个非常大的JSON数组的最流畅/最优雅/可读的方法是什么。

这是一个数组的例子。请注意,有时数组大小不同(因为它是数据库查询)。

{
 "1":
  {
   "attributes":
    {"Label" : "Some Label"},
   "leader":
    {"123" :
       {"Name" : "Joe",
        "Age"  : "50"}
    }
 }
},
 "2"
  {"attributes":
    {"Label" : "Some label"},
  "leader":
    {"456" :
      {"Name" : "Bob",
       "Age" : "24",
       "followers" : 
          {"243" :
            {"Name" : Jimmy"}

...etc

对于此示例的英语,您可能会获得一个组织列表,其中包含可能拥有可能拥有合同的员工的关注者的领导者等。

我实际上已经没有问题通过使用这样的结构来迭代这种结构(因为我确实知道最深层次是什么):

$.each(data, function(i, Org){
   var org = i;
  $.each(org, function (i, leader){
    $.each(leader, function (i, follower){
     .....etc
   }
 }
}

是唯一能够通过嵌套的$ .each循环遍历多维数组的方法,还是有更好的方法来实现这一点,即一个递归数组(以某种方式知道如何移动索引并深入研究一直到没有什么东西离开,然后向后移动等。)

1 个答案:

答案 0 :(得分:2)

这是我后来写的一个递归函数,它解析数组 -

function arrayParse(currentObject, key) {
    for (var property in currentObject) {
        if (typeof currentObject[property] === "object") {
            arrayParse(currentObject[property], property);
        } else {
            $('#result').append(
                (property=='value' && key ? key : property)
                + ' -- ' + currentObject[property] + '<br />'
            );
        }
    }
}

修复样本数组的问题后,我得到以下输出 -

Label -- Some Label
Name -- Joe
Age -- 50
Label -- Some label
Name -- Bob
Age -- 24
Name -- Jimmy
Age -- 40

这是example