首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >遍历Javascript中的嵌套数据

遍历Javascript中的嵌套数据
EN

Stack Overflow用户
提问于 2017-03-03 07:28:08
回答 1查看 86关注 0票数 2

我有以下数据结构:

代码语言:javascript
运行
复制
{  
   "data":[  
      {  
         "id":1,
         "name":"EU Group",
         "parent_id":null,
         "children":[  
            {  
               "id":2,
               "name":"EMEA Branch",
               "parent_id":1,
               "children":[  
                  {  
                     "id":5,
                     "name":"UK",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":6,
                     "name":"France",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":7,
                     "name":"Germany",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":8,
                     "name":"Spain",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":9,
                     "name":"Finland",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":10,
                     "name":"Hungary",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":11,
                     "name":"Poland",
                     "parent_id":2,
                     "children":[  
                        {  
                           "id":25,
                           "name":"Romania",
                           "parent_id":11,
                           "lr":","
                        }
                     ],
                     "lr":","
                  },
                  {  
                     "id":12,
                     "name":"Sweden",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":16,
                     "name":"Italy",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":17,
                     "name":"Czech",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":18,
                     "name":"Denmark",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":19,
                     "name":"Rest of the world",
                     "parent_id":2,
                     "lr":","
                  },
                  {  
                     "id":36,
                     "name":"Middle East",
                     "parent_id":2,
                     "children":[  
                        {  
                           "id":21,
                           "name":"Russia",
                           "parent_id":36,
                           "lr":","
                        }
                     ],
                     "lr":","
                  },
                  {  
                     "id":38,
                     "name":"Africa",
                     "parent_id":2,
                     "children":[  
                        {  
                           "id":49,
                           "name":"Algeria",
                           "parent_id":38,
                           "lr":","
                        },
                        {  
                           "id":50,
                           "name":"Morocco",
                           "parent_id":38,
                           "lr":","
                        }
                     ],
                     "lr":","
                  },
                  {  
                     "id":48,
                     "name":"Belgium",
                     "parent_id":2,
                     "lr":","
                  }
               ],
               "lr":","
            },
            {  
               "id":45,
               "name":"International Branch",
               "parent_id":1,
               "lr":","
            },
            {  
               "id":46,
               "name":"APAC Branch",
               "parent_id":1,
               "children":[  
                  {  
                     "id":51,
                     "name":"Singapore",
                     "parent_id":46,
                     "lr":","
                  },
                  {  
                     "id":52,
                     "name":"China",
                     "parent_id":46,
                     "lr":","
                  },
                  {  
                     "id":53,
                     "name":"Vietnam",
                     "parent_id":46,
                     "lr":","
                  },
                  {  
                     "id":54,
                     "name":"Indonesia",
                     "parent_id":46,
                     "lr":","
                  },
                  {  
                     "id":55,
                     "name":"India",
                     "parent_id":46,
                     "lr":","
                  },
                  {  
                     "id":56,
                     "name":"Malaysia",
                     "parent_id":46,
                     "lr":","
                  }
               ],
               "lr":","
            }
         ],
         "lr":","
      }
   ]
}

我试图使用我创建的函数来迭代它:

代码语言:javascript
运行
复制
buildHierarchy(item) {
    zone.children.forEach((child) => {
        this.buildHierarchy(child);
    })
}

它在我的呈现函数中被进一步调用:

代码语言:javascript
运行
复制
render() {
    ...
    if (zones[0]) {
        this.buildHierarchy(zones);
        ...
    }
    ...
}

但是,当它击中一个没有子级的项目时,它就会中断。我怎么才能让这个起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-03 07:32:06

在使用forEach之前对儿童进行检查:

代码语言:javascript
运行
复制
buildHierarchy(zone) {
    if(zone && zone.children) 
       zone.children.forEach(child => { this.buildHierarchy(child) })
}

我认为这是不匹配的,在zone方法中您需要接收item而不是item

检查此代码:

代码语言:javascript
运行
复制
let data = {
   "data":[
      {
         "id":1,
         "name":"EU Group",
         "parent_id":null,
         "children":[
            {
               "id":2,
               "name":"EMEA Branch",
               "parent_id":1,
               "children":[
                  {
                     "id":5,
                     "name":"UK",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":6,
                     "name":"France",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":7,
                     "name":"Germany",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":8,
                     "name":"Spain",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":9,
                     "name":"Finland",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":10,
                     "name":"Hungary",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":11,
                     "name":"Poland",
                     "parent_id":2,
                     "children":[
                        {
                           "id":25,
                           "name":"Romania",
                           "parent_id":11,
                           "lr":","
                        }
                     ],
                     "lr":","
                  },
                  {
                     "id":12,
                     "name":"Sweden",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":16,
                     "name":"Italy",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":17,
                     "name":"Czech",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":18,
                     "name":"Denmark",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":19,
                     "name":"Rest of the world",
                     "parent_id":2,
                     "lr":","
                  },
                  {
                     "id":36,
                     "name":"Middle East",
                     "parent_id":2,
                     "children":[
                        {
                           "id":21,
                           "name":"Russia",
                           "parent_id":36,
                           "lr":","
                        }
                     ],
                     "lr":","
                  },
                  {
                     "id":38,
                     "name":"Africa",
                     "parent_id":2,
                     "children":[
                        {
                           "id":49,
                           "name":"Algeria",
                           "parent_id":38,
                           "lr":","
                        },
                        {
                           "id":50,
                           "name":"Morocco",
                           "parent_id":38,
                           "lr":","
                        }
                     ],
                     "lr":","
                  },
                  {
                     "id":48,
                     "name":"Belgium",
                     "parent_id":2,
                     "lr":","
                  }
               ],
               "lr":","
            },
            {
               "id":45,
               "name":"International Branch",
               "parent_id":1,
               "lr":","
            },
            {
               "id":46,
               "name":"APAC Branch",
               "parent_id":1,
               "children":[
                  {
                     "id":51,
                     "name":"Singapore",
                     "parent_id":46,
                     "lr":","
                  },
                  {
                     "id":52,
                     "name":"China",
                     "parent_id":46,
                     "lr":","
                  },
                  {
                     "id":53,
                     "name":"Vietnam",
                     "parent_id":46,
                     "lr":","
                  },
                  {
                     "id":54,
                     "name":"Indonesia",
                     "parent_id":46,
                     "lr":","
                  },
                  {
                     "id":55,
                     "name":"India",
                     "parent_id":46,
                     "lr":","
                  },
                  {
                     "id":56,
                     "name":"Malaysia",
                     "parent_id":46,
                     "lr":","
                  }
               ],
               "lr":","
            }
         ],
         "lr":","
      }
   ]
}

function buildHierarchy(item){
   console.log('name', item.name);
   if(item && item.children){        
        item.children.forEach(el=>buildHierarchy(el));
    }
}

buildHierarchy(data.data[0]);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42573065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档