menuTree.js 758 Bytes
export function buildMenuTree(menuList) {
  // 创建一个映射,用于快速查找菜单项
  const menuMap = new Map();
  const tree = [];

  // 首先将所有菜单项放入映射中
  menuList.forEach((menu) => {
    menuMap.set(menu.menuId, { ...menu, children: [] });
  });

  // 构建树形结构
  menuList.forEach((menu) => {
    const menuItem = menuMap.get(menu.menuId);
    if (menu.parentMenuId === 0) {
      // 如果是顶级菜单,直接添加到树中
      tree.push(menuItem);
    } else {
      // 如果不是顶级菜单,找到其父菜单并添加到父菜单的children中
      const parent = menuMap.get(menu.parentMenuId);
      if (parent) {
        parent.children.push(menuItem);
      }
    }
  });

  return tree;
}