要求:输入id为212 ,返回:菜单2/菜单2-1/菜单2-1-2
思路:212 切分为 2、 21 、212,查找对应的text ,递归
解法:直接上代码
const TreeList = [
{
id: 1, parent: null, text: '菜单1', children: [
{ id: 11, parent: 1, text: '菜单1-1' },
{
id: 12, parent: 1, text: '菜单1-2', children: [
{ id: 121, parent: 12, text: '菜单1-2-1' },
]
},
]
},
{
id: 2, parent: null, text: '菜单2', children: [
{
id: 21, parent: 2, text: '菜单2-1', children: [
{ id: 211, parent: 21, text: '菜单2-1-1' },
{ id: 212, parent: 21, text: '菜单2-1-2' },
]
}
]
}
];
function getTreeString(id, tree) {
const _id = id.toString();
let ids = []
let res = '';
for (let i = 0; i < _id.length; i++) {
ids.push(_id.slice(0, i + 1))
};
for (let i of ids) {
idNumber = Number(i);
function getTreeItem(tree, idNumber) {
tree.map((item) => {
if (item.id === idNumber) {
res += `${item.text}/`
} else if (item.children) {
getTreeItem(item.children, idNumber)
}
})
}
getTreeItem(tree, idNumber)
}
return res.slice(0, -1)
}
console.log(getTreeString(212, TreeList));