javascript - 递归循环数据
高洛峰
高洛峰 2017-04-11 11:14:22
[JavaScript讨论组]

下面的数据想用递归或其实灵活的方法
把他实现成下面的最终结果要怎么实现???

var menus = [];

//数据
{
    "value":[
        {
            "subMenus":[],
            "menuName":"一级",
            "clickUrl":"/"
        },
        {
            "menuName":"一级",
            "subMenus":[{
                "subMenus":[],
                "clickUrl":"/two/a"
                "menuName":"二级"
            },{
                "subMenus":[],
                "clickUrl":"/two/b",
                "menuName":"二级"
            }]
        }
    ]
}

//最终结果
menus: [
    { title: '一级', path: '/'},
    {
        title: '一级',
        children: [
            { title: '二级', path: '/two/a' },
            { title: '二级', path: '/two/b' },
        ]
    },
    {
        title: '一级',
        children: [
            { 
                title: '二级',
                children: [
                    {title: '三级', path: '/three/c'}
                ]    
            }
        ]
    }
]
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
PHP中文网

直接上代码~

<html>

    <script src="jquery.min.js"></script>
    <body>
        <script>
            var menus = [];

            var  temp = {
                "value":[
                    {
                        "subMenus":[],
                        "menuName":"一级",
                        "clickUrl":"/",
                    },
                    {
                        "menuName":"一级",
                        "subMenus":[{
                            "subMenus":[],
                            "clickUrl":"/two/a",
                            "menuName":"二级",
                        },{
                            "subMenus":[],
                            "clickUrl":"/two/b",
                            "menuName":"二级",
                        }]
                    }
                ]
            };
            function changeJson(temp){
                var tempMenus = [];
                for(var i = 0; i < temp.length; i ++){
                    tempMenus.push({});
                    var menuItem = tempMenus[i];
                    menuItem.title = temp[i].menuName;
                    menuItem.path = temp[i].clickUrl;
                    if(temp[i].subMenus.length > 0){
                        menuItem.children = changeJson(temp[i].subMenus);
                    }else{
                        menuItem.children = [];
                    }
                }
                return tempMenus;
            }
            console.log(changeJson(temp.value));
        </script>
    </body>
</html>
阿神
function convert(data){
    var deep = data.value || data.subMenus
    return !deep ? [] : deep.map(function(menu){
        return {
            title:menu.menuName,
            path:menu.clickUrl,
            children:convert(menu)
        }
    })
}
// 使用的时候
var menus = convert(yourobject)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号