为了账号安全,请及时绑定邮箱和手机立即绑定

求大佬指点哈!下面的数据格式化怎么写?

求大佬指点哈!下面的数据格式化怎么写?

MMTTMM 2019-06-13 10:12:58
现需要一个树形菜单(需要根据数据情况,自动生成,没有上线,极端情况就是有很多级菜单),现用插件替代,需要如下数据格式[{name:'菜单名1',children:[{name:'菜单名1-1',children:[{name:'菜单名1-1-1'}]}]},{name:'菜单名2',children:[{name:'菜单2-2'}]},{name:'菜单3'}]//数据会通过children包含子菜单,有多少级子菜单,数据内部就会有多少个children的嵌套现后台提供的数据格式如下所示[{name:'菜单一',children:{'aaa':{name:'aaa'},'bbb':{name:'bbb',children:{'ccc':{name:'ccc'},'ddd':{name:'ddd'}}}}},{name:'菜单2',children:{'eee':{name:'eee'}}},{name:'菜单3'}]//后台给的数据,在children中并非数组,而是将子菜单的名字当作了json的key,然后对应一个json字段{name:'菜单的名字'}自己写的半成品方法如下所示vartreeData=[];functioncreatedTreeData(data){data.forEach(function(item){functionchildren(childrenData){varchildrenArr=[]for(keyinchildrenData){//就是在这个forin的递归中始终出现问题}returnchildrenArr}treeData.push({name:item.name,children:children(item.children)})})}//ps:请勿使用ES6语法,因为基于一个老项目增加一个新功能,并没有babel在线等,谢谢啦
查看完整描述

2 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

emmmm...
functionhandleChildren(obj){
returnObject.keys(obj).map(function(v){
varchildren=obj[v].children;
if(children)obj[v].children=handleChildren(children);
returnobj[v];
});
}
functioncreatedTreeData(arr){
returnarr.map(function(v){
varchildren=v.children;
if(children)v.children=handleChildren(children);
returnv;
});
}
createdTreeData(arr);
                            
查看完整回答
反对 回复 2019-06-13
  • 2 回答
  • 0 关注
  • 356 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信