唐宋元明清.
2017-11-29 10:05
采纳率: 80%
浏览 4.2k

大神们谁会用es6遍历这样的树状结构啊

var root = [{
            name:'D盘',
            children:[{
                    name:'学习',
                    children:[
                        {
                            name:'电子书',
                            children:[
                                {
                                    name:'文学',                                         
                                    children:[
                                        {
                                            name:'茶馆'                                                   
                                        },
                                        {
                                          name:'红与黑'
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                },
                {
                    name:'电影',
                    children:[
                        {
                            name:'美国电影'
                        },
                        {
                            name:'日本电影'
                        }
                    ]                  
                }
            ]
        }
        ```

大神们谁会用es6遍历这样的树状结构啊 
用es5可以这样, 但是es6就行不通了

function getMenuName(menus) {
var name = "";
for (var i = 0; i < menus.length; i++) {
menus[i].label = menus[i].name;
menus[i].value = menus[i].id;
(function(data) {
console.log('遍历')
var m = arguments[0];
for (var j = 0; j < m.length; j++) {
console.log(m[i].name);
m[i].label = m[i].name
if( m[j].children != null && m[j].children.length > 0) {
arguments.callee(m[j].children); //递归匿名方法
}
}
})(menus[i].children);
}
}

```

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 今晚打老斧 2017-11-30 07:42
    已采纳

    首先,题主你的数据最后少了一个],我还看了半天,先上代码

     var root = [{
                name:'D盘',
                children:[{
                        name:'学习',
                        children:[
                            {
                                name:'电子书',
                                children:[
                                    {
                                        name:'文学',                                         
                                        children:[
                                            {
                                                name:'茶馆'                                                   
                                            },
                                            {
                                              name:'红与黑'
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        name:'电影',
                        children:[
                            {
                                name:'美国电影'
                            },
                            {
                                name:'日本电影'
                            }
                        ]                  
                    }
                ]
            }
        ]
    
    function getMenuName(menus){
        for (var value of menus) {
    
            if (value.children) {
                getMenuName(value.children)
            }
            console.log(value.name);
        }
    
    }
    getMenuName(root)
    

    不知道你的遍历顺序有什么要求,这样是从深到浅遍历的,
    这个是用ES6的for of方法执行的遍历。

    点赞 评论

相关推荐 更多相似问题