javascript - 用Js实现非递归无限分类
巴扎黑
巴扎黑 2017-04-11 12:15:43
[JavaScript讨论组]

自定义一组数据,内容任意,要求做到将无序的多级别数据格式化成数
这是boss给我出的一道题,他是PHP,而我还只是个js新手
之前以递归的形势完成了这道题,然后boss就让我再用非递归的办法做一次

以下是我自定义的数据,以层次编码的方式表述数据间的关系:
最终完成的效果是用数组嵌套,类似于:

var data=[
    {id:'01',name:"A"},
    {id:'0101',name:"A1"},
    {id:'0103',name:"A3"},
    {id:'0102',name:"A2"},
    {id:'0202',name:"B2"},    
    {id:'0301',name:"C1"},
    {id:'0303',name:"C3"},
    {id:'0302',name:"C2"},
    {id:'02',name:"B"},
    {id:'0201',name:"B1"},  
    {id:'020101',name:"B11"},
    {id:'030103',name:"C13"},
    {id:'03010301',name:"C131"},
    {id:'03010302',name:"C132"},
    {id:'0203',name:"B3"},
    {id:'03',name:"C"},
    {id:'030101',name:"C11"},
    {id:'030102',name:"C12"},  
    {id:'0301030101',name:"C1311"}, 
    {id:'0301030201',name:"C1321"}  
];
[
    [A,[A1,A2,A3]],
    [B,[B1,B2,B3]],
    [C,[
        C1,C2,C3,
            [C11,C12,C13
                [c131,c132]
            ]
        ]
    ]          
]    

或者其他能够把树表示清楚的格式也可以

这只是一个PHP的boss给我这个JS新人出的一道小考题
没有实际的用途,所以数据也是任意的,只要能达到效果就可以
只是我数据结构的知识实在太过贫乏,做了很久都无法达到效果
在网上查了很多资料,大多是关于php的无限极非递归实现,看起来很吃力,也没什么头绪

PS:下面简述一下我的思路:
1、 将同一级别的数据组成数组,放入group数组的对应位置,最后获取级别长度
2、 for循环由下至上,将子节点数据插入父节点的数组中,保存父节点,作为下次循环的子节点
最后在代码实现的过程中,卡在了当有多个子节点时,怎么确定各个父节点的位置,如

   [[B11],[C11,C12]]

B11需要插入到上一级的B数组中,并对应B1,而[C11,C12]需要插入到C数组中,并对应C1,如果到更深层次,要确定的位置量跟多,具体怎么实现,实在没有头绪,感觉我的思路应该不对

如果诸位有什么思路,或者能建议我去了解哪方面的资料,都可以说一说,感谢大家了!

巴扎黑
巴扎黑

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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