现需要一个树形菜单(需要根据数据情况,自动生成,没有上线,极端情况就是有很多级菜单),现用插件替代,需要如下数据格式
[
{
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: '菜单的名字'}
自己写的半成品方法如下所示
var treeData = [];
function createdTreeData(data) {
data.forEach(function (item) {
function children(childrenData) {
var childrenArr = []
for (key in childrenData) {
// 就是在这个for in 的递归中始终出现问题
}
return childrenArr
}
treeData.push({
name: item.name,
children: children(item.children)
})
})
}
// ps:请勿使用ES6语法,因为基于一个老项目增加一个新功能,并没有babel
在线等,谢谢啦
emmmm...