let input = [{ id: 1, val: ‘学校‘, parentId: null },{ id: 2, val: ‘班级1‘, parentId: 1 },{ id: 3, val: ‘班级2‘, parentId: 1 },{ id: 4, val: ‘学生1‘, parentId: 2 },{ id: 5, val: ‘学生2‘, parentId: 3 },{ id: 6, val: ‘学生3‘, parentId: 3 }] let output = { id: 1, val: ‘学校‘, children: [{ id: 2, val: ‘班级1‘, children: [ { id: 4, val: ‘学生1‘, children: [] } ] }, { id: 3, val: ‘班级2‘, children: [ { id: 5, val: ‘学生2‘, children: [] },{ id: 6, val: ‘学生3‘, children: [] } ] }] } function arrToTree(arr){ let output = {} for(let i = 0;i < arr.length;i++){ let item = arr[i] if(item.parentId == null){ output.id = item.id output.val = item.val output.children = toTree(output.id,arr) } } return output } function toTree(id,arr){ let children = [] for(let i = 0;i < arr.length;i++){ let item = arr[i] if(id == item.parentId){ children.push({ id:item.id, val:item.val, children:toTree(item.id,arr) }) } } return children }
原文:https://www.cnblogs.com/zhenjianyu/p/13367164.html