自定义一组数据,内容任意,要求做到将无序的多级别数据格式化成数
这是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,如果到更深层次,要确定的位置量跟多,具体怎么实现,实在没有头绪,感觉我的思路应该不对
如果诸位有什么思路,或者能建议我去了解哪方面的资料,都可以说一说,感谢大家了!
因为第一次提问需要审核,在等审核的时候我把php的解决方案研究了一下
最后用JS模仿成功了,PHP方案代码如下:
http://www.oschina.net/code/s...
我的模仿如下:
最后达到了预期要求,如果大家对这个有兴趣,欢迎来提提意见建议!