Js对象转树形结构
项目中常见的一种数据处理的需求,就是将后端返回的json对象转成树形结构。
let data = [
{ id: 1, parent: null, text: '菜单1' },
{ id: 11, parent: 1, text: '菜单1-1' },
{ id: 12, parent: 1, text: '菜单1-2' },
{ id: 2, parent: null, text: '菜单2' },
{ id: 21, parent: 2, text: '菜单2-1' },
{ id: 22, parent: 2, text: '菜单2-2' }
]
/*
1、先遍历源数据,根据parent父级节点获取到一级菜单list
2、遍历list,接着递归(传入子级的parent和children属性)
3、判断如果子级菜单中没有children就删除该属性
*/
function jsonTree(data, p, list) {
for (let item of data) {
if (item.parent == p) list.push(item);
}
for (let i of list) {
i.children = [];
jsonTree(data, i.id, i.children);
if(i.children.length == 0) delete i.children;
}
return list;
}
console.log(jsonTree(data, null, []));


浙公网安备 33010602011771号