写一个循环,用js遍历每个children元素

Write a loop and iterate each children element using js

我下面有一个object。我需要编写一个 for 循环,它迭代每个 children 和显示 ID。

我使用了下划线库但没有找到解决方案

   *[  
   {  
      Id:1,
      Name:"Test",
      children:[  
         {  
            Id:11,
            Name:"Test",
            children:[  
               {  
                  Id:113,
                  Name:"Test",
                  children:[  

                  ]
               },
               {  
                  Id:114,
                  Name:"Test",
                  children:[  

                  ]
               }
            ]
         },
         {  
            Id:12,
            Name:"Test",
            children:[  

            ]
         },
         {  
            Id:13,
            Name:"Test",
            children:[  
               {  
                  Id:115,
                  Name:"Test",
                  children:[  
                     {  
                        Id:1111,
                        Name:"Test",
                        children:[  

                        ]
                     }
                  ]
               }
            ]
         },
         {  
            Id:14,
            Name:"Test",
            children:[  

            ]
         }
      ]
   }   {  
      Id:2,
      Name:"Test",
      children:[  

      ]
   }
]*

你可以重新执行:

var items= [  
   {  
      Id:1,
      Name:"Test",
      children:[  
         {  
            Id:11,
            Name:"Test",
            children:[  
               {  
                  Id:113,
                  Name:"Test",
                  children:[  

                  ]
               },
               {  
                  Id:114,
                  Name:"Test",
                  children:[  

                  ]
               }
            ]
         },
         {  
            Id:12,
            Name:"Test",
            children:[  

            ]
         },
         {  
            Id:13,
            Name:"Test",
            children:[  
               {  
                  Id:115,
                  Name:"Test",
                  children:[  
                     {  
                        Id:1111,
                        Name:"Test",
                        children:[  

                        ]
                     }
                  ]
               }
            ]
         },
         {  
            Id:14,
            Name:"Test",
            children:[  

            ]
         }
      ]
   },   {  
      Id:2,
      Name:"Test",
      children:[  

      ]
   }
];

displayIds(items);

function displayIds(datas) {
  datas.forEach(function(data) {
    console.log(data.Id);
    if (data.children) {
      displayIds(data.children);
    }
  });
}

你可以像这样使用递归

var obj = [  
   {  
      Id:1,
      Name:"Test",
      children:[  
         {  
            Id:11,
            Name:"Test",
            children:[  
               {  
                  Id:113,
                  Name:"Test",
                  children:[  

                  ]
               },
               {  
                  Id:114,
                  Name:"Test",
                  children:[  

                  ]
               }
            ]
         },
         {  
            Id:12,
            Name:"Test",
            children:[  

            ]
         },
         {  
            Id:13,
            Name:"Test",
            children:[  
               {  
                  Id:115,
                  Name:"Test",
                  children:[  
                     {  
                        Id:1111,
                        Name:"Test",
                        children:[  

                        ]
                     }
                  ]
               }
            ]
         },
         {  
            Id:14,
            Name:"Test",
            children:[  

            ]
         }
      ]
   },   {  
      Id:2,
      Name:"Test",
      children:[  

      ]
   }
]

function showIds(obj, i=0) {
  if(!obj[i]) return
  console.log(obj[i].Id);
  showIds(obj, i+1)
  if(obj[i].children) showIds(obj[i].children);
}

showIds(obj)
  

var data = [  
   {  
      Id:1,
      Name:"Test",
      children:[  
         {  
            Id:11,
            Name:"Test",
            children:[  
               {  
                  Id:113,
                  Name:"Test",
                  children:[  

                  ]
               },
               {  
                  Id:114,
                  Name:"Test",
                  children:[  

                  ]
               }
            ]
         },
         {  
            Id:12,
            Name:"Test",
            children:[  

            ]
         },
         {  
            Id:13,
            Name:"Test",
            children:[  
               {  
                  Id:115,
                  Name:"Test",
                  children:[  
                     {  
                        Id:1111,
                        Name:"Test",
                        children:[  

                        ]
                     }
                  ]
               }
            ]
         },
         {  
            Id:14,
            Name:"Test",
            children:[  

            ]
         }
      ]
   },
   {  
      Id:2,
      Name:"Test",
      children:[  

      ]
   }
];

showId(data);

function showId(data){
  for(var i = 0; i < data.length; i++){
  console.log(data[i].Id);
  if(data[i].children.length > 0){
    showId(data[i].children);
  }
}
}