2016-07-26 87 views
-2

我有一个JSON文件是这样的:嵌套数组对象/ jQuery的

{[ 
    {"name":"avc"}, 
    {"name":"Anna"}, 
    {"name":"Peter"}, 
    {"Folder":[ 
      {"name":"John"}, 
      {"name":"Anna"}, 
    {"Folder":[ 
      {"name":"gg"}, 
      {"name":"hh"} 
     ] 
    } 
    ] 
} 
] 

}

它可以被嵌套到任意数量的级别。 我想遍历这个文件的任何级别。 我怎样才能做到这一点使用Javascript/JQuery的

感谢

+3

你的问题需要更多的细节。你到底想做什么? – str

+2

这不是一个JSON文件。您必须删除变量赋值才能获取JSON文件。 – dlopez

+0

使用语句和表达式来遍历它可能工作。 – gcampbell

回答

2

您可以用Array#forEach迭代,如果Folder是一个数组,然后重复这一点。

var a = [{ "name": "avc" }, { "name": "Anna" }, { "name": "Peter" }, { "Folder": [{ "name": "John" }, { "name": "Anna" }, { "Folder": [{ "name": "gg" }, { "name": "hh" }] }] }]; 
 

 
a.forEach(function iter(a) { 
 
    if (Array.isArray(a.Folder)) { 
 
     a.Folder.forEach(iter); 
 
     return; 
 
    } 
 
    console.log(a.name); 
 
});

1

我看了你的问题是这样的:

我怎么能遍历对象的数组,对象可能有 孩子它自己的。和每一个孩子可能有孩子等等...

一种方式是写一个递归函数,这是调用自身的函数。这是一个递归函数,它将每个帖子记录到控制台中。 请注意,我已将模型更改为适当的对象。此外,我已将名称添加到文件夹,但如果不必要,可以将其删除。

var a = [ 
 
    {name:"avc"}, 
 
    {name:"Anna"}, 
 
    {name:"Peter"}, 
 
    {name:"Folder name1", 
 
    folder:[ 
 
      {name:"John"}, 
 
      {name:"Anna"}, 
 
    {name: "Folder name2", 
 
    folder:[ 
 
      {name:"James"}, 
 
      {name:"Clark"}, 
 
      {name: "Folder name3", 
 
      folder:[ 
 
      {name:"Cecilia"}, 
 
      {name:"Clara"} 
 
      ]}, 
 
      {name:"Stephen"} 
 
     ] 
 
    } 
 
    ] 
 
} 
 
]; 
 

 

 

 
function read(obj){ 
 
    for(var i = 0; i < obj.length; i++) 
 
    { 
 
     console.log(obj[i].name); // Or do what you need here... 
 
     if(obj[i].folder) 
 
     { 
 
      // Recursive call 
 
      read(obj[i].folder); 
 
     } 
 
    } 
 
} 
 

 
read(a);

+0

&Nina Scholz中的文件夹名称。感谢..我明白了。它的工作原理,我想要的...再一次感谢.... – CLIX159