let arr = [
{
path: "/",
name: "/",
redirect: "/home",
component: () => import("@/layout/index.vue"), // 容器布局-顶层路由
meat: {
isKeepAlive: true
},
// 二级路由-主要渲染页面
children: [
{
path: "/home",
name: "home",
component: () => import("@/views/home/home.vue"),
meat: {
title: "home", // 国际化
isHide: false, // 是否隐藏此路由
isKeepAlive: true, // 缓存组件状态
isAffix: true, // 固定在tagesView栏上
isLink: "", // 是否外链
isIframe: false, // 是否内嵌窗口
roles: ["admin"], // 路由权限
icon: "home" // 菜单图标
}
},
{
path: "/home2",
name: "home2",
component: () => import("@/views/home/home.vue"),
meat: {
title: "home2", // 国际化
isHide: false, // 是否隐藏此路由
isKeepAlive: true, // 缓存组件状态
isAffix: true, // 固定在tagesView栏上
isLink: "", // 是否外链
isIframe: false, // 是否内嵌窗口
roles: ["common"], // 路由权限
icon: "home" // 菜单图标
}
},
{
path: "/common-components",
name: "common-components",
redirect: "/common-components/form-component",
component: () => import("@/views/common-components/form-component/form-component.vue"),
meta: {
title: "common-components",
isLink: "",
isHide: false,
isKeepAlive: true,
isAffix: true,
isIframe: false,
roles: ["admin"],
icon: "set"
},
children: [
{
path: "/common-components/form-component",
name: "form-component",
component: () => import("@/views/common-components/form-component/form-component.vue"),
meta: {
title: "form-component",
isLink: "",
isHide: false,
isKeepAlive: true,
isAffix: false,
isIframe: false,
roles: ["admin"],
icon: "common"
}
}
]
},
{
path: "/multilevel-menu",
name: "multilevel-menu",
redirect: "/multilevel-menu/second-menu",
component: () => import("@/views/multilevel-menu/second-menu/second-menu.vue"),
meta: {
title: "multilevel-menu",
isLink: "",
isHide: false,
isKeepAlive: true,
isAffix: true,
isIframe: false,
roles: ["admin"],
icon: "switch"
},
children: [
{
path: "/multilevel-menu/second-menu",
name: "second-menu",
component: () => import("@/views/multilevel-menu/second-menu/second-menu.vue"),
meta: {
title: "second-menu",
isLink: "",
isHide: false,
isKeepAlive: true,
isAffix: false,
isIframe: false,
roles: ["admin"],
icon: "common"
},
children: [
{
path: "/multilevel-menu/third-menu",
name: "third-menu",
component: () => import("@/views/multilevel-menu/third-menu/third-menu.vue"),
meta: {
title: "third-menu",
isLink: "",
isHide: false,
isKeepAlive: true,
isAffix: false,
isIframe: false,
roles: ["admin"],
icon: "common"
}
}
]
}
]
}
]
}
];
// console.log(arr)
// let rule = ["admin"]
// console.time('test');
// let all = [];
// const flatRoute = (arr) => {
// arr.forEach(item => {
// all.push(item)
// if(item.children){
// return flatRoute(item.children)
// }
// })
// }
// flatRoute(arr)
// console.log(all)
// console.timeEnd('test')
console.time('test');
function flattenChildrenReduce(arr) {
return arr.reduce((result, item) => {
result.push(item);
if (item.children) {
result = result.concat(flattenChildrenReduce(item.children));
}
return result;
}, []);
}
console.log(flattenChildrenReduce(arr));
console.timeEnd('test')
console