给的数据如下:
const menuData = [
{ name: "一级菜单1", child: [], id: 0, pid: -1 },
{ name: "一级菜单2", child: [], id: 1, pid: -1 },
{ name: "一级菜单3", child: [], id: 2, pid: -1 },
{ name: "二级菜单1", child: [], id: 3, pid: 0 },
{ name: "二级菜单2", child: [], id: 4, pid: 0 },
{ name: "三级菜单1", child: [], id: 5, pid: 3 },
{ name: "三级菜单2", child: [], id: 6, pid: 3 },
{ name: "四级菜单1", child: [], id: 7, pid: 5 },
{ name: "四级菜单3", child: [], id: 8, pid: 5 },
];
代码如下:
function convertToTree(menuData) {
const rootMenus = [];
menuData.forEach((menu) => {
const parentMenu = menuData[menu.pid];
if (menu.pid === -1) {
rootMenus.push(menu);
} else {
parentMenu.child.push(menu);
}
});
return rootMenus;
}
// 使用示例
const menuData = [
{ name: "一级菜单1", child: [], id: 0, pid: -1 },
{ name: "一级菜单2", child: [], id: 1, pid: -1 },
{ name: "一级菜单3", child: [], id: 2, pid: -1 },
{ name: "二级菜单1", child: [], id: 3, pid: 0 },
{ name: "二级菜单2", child: [], id: 4, pid: 0 },
{ name: "三级菜单1", child: [], id: 5, pid: 3 },
{ name: "三级菜单2", child: [], id: 6, pid: 3 },
{ name: "四级菜单1", child: [], id: 7, pid: 5 },
{ name: "四级菜单3", child: [], id: 8, pid: 5 },
];
const rootMenus = convertToTree(menuData);
console.log(rootMenus);