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, []));