let arr = [ { id: 1, parent: null, text: '菜单1' }, { id: 11, parent: 1, text: '菜单1-1' }, { id: 111, parent: 11, text: '菜单1-1-1' }, { id: 1111, parent: 111, text: '菜单1-1-1-1' }, { id: 1112, parent: 111, text: '菜单1-1-1-2' }, { id: 112, parent: 11, text: '菜单1-1-2' }, { 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' }, ]; function getTreeList1(rootList, id, list) { for (let item of rootList) { if (item.parent == id) { list.push(item); } } for (let i of list) { i.children = []; getTreeList(rootList, i.id, i.children); if(i.children.length==0 ){ delete i.children } } return list; } let res = getTreeList(arr, null, []); console.log(res)