不废话直接上代码
let menuList = [
{ parentId: -1, name: "添加管理员", id: 10, auth: "admin" },
{ parentId: 10, name: "管理员权限分配", id: 11, auth: "admin-auth" },
{ parentId: -1, name: "商品管理", id: 1, auth: "product" },
{ parentId: 1, name: "商品列表", id: 4, auth: "productList" },
{ parentId: 4, name: "商品分类", id: 5, auth: "category" },
{ parentId: 5, name: "添加分类", id: 8, auth: "addClassification" },
{ parentId: 4, name: "商品上架", id: 6, auth: "product" },
{ parentId: -1, name: "评论管理", id: 2, auth: "comments" },
{ parentId: -1, name: "个人中心", id: 3, auth: "profile" },
];
const getMenuListAndAuth = (menuList) => {
let menus = createTree(menuList);
let auths = traverse(menus, []);
return { menus, auths };
};
function createTree(data) {
data.map((item) => {
item.children = [];
data.map(child => ((item.id === child.parentId) && item.children.push(child)));
return item;
});
let father = data.filter((item) => item.parentId === -1);
return father;
}
function traverse(data, result) {
for (let i = 0; i < data.length; i++) {
result.push(data[i].auth);
if (data[i].children.length > 0) {
traverse(data[i].children, result);
}
}
return result;
}
try {
module.exports = { getMenuListAndAuth };
} catch (e) {}