Конфигурация маршрута хранится в нескольких пакетах в node_modules
,
Мы хотим правильно отсортировать их по path
, когда мы сгруппируем их все в один массив в нашем приложении.
Для детей, узнаваемых по childRoutes
, мы хотим сохранить глубину.
Вот как это выглядит:
const routeConfig1 = [
{
path: "/user-management",
childRoutes: [
{
path: "/user-management/user",
childRoutes: [
{
path: "/user-management/user/service"
}
]
}
]
}
];
const routeConfig2 = [
{
path: "/user-management",
childRoutes: [
{
path: "/user-management/user",
component: "UserComponent",
childRoutes: [
{
path: "/user-management/user/service/tokyo",
component: "TokyoService"
}
]
}
]
}
];
const routeConfig3 = [
{
path: "/user-management",
childRoutes: [
{
path: "/user-management/user/:id"
}
]
}
];
const routeConfigList = [routeConfig1, routeConfig2, routeConfig3];
function mergeRouteConfig(list) {
let newList = [...list];
list.map(r => {});
return newList;
}
const flatten = mergeRouteConfig(routeConfigList);
const expected = [
[
{
path: "/user-management",
childRoutes: [
{
path: "/user-management/user",
component: "UserComponent",
childRoutes: [
{
path: "/user-management/user/service"
},
{
path: "/user-management/user/service/tokyo",
component: "TokyoService"
}
]
},
{
path: "/user-management/user/:id"
}
]
}
]
];
const flattenStr = JSON.stringify(flatten, null, 2);
const expectedStr = JSON.stringify(expected, null, 2);
const result = flattenStr === expectedStr;
document.getElementById(
"app"
).innerHTML = `Result: ${`${result ? "OK" : "NOK"}`}
${flattenStr}
Ожидаемый
${expectedStr}
`;
body{font-family:sans-serif}pre{background:#ccc}
<div id="app"></div>
Codesandbox : https://codesandbox.io/s/1zmy69r5mq
Я пробовал с Map
, reduce
, но мой код выглядит немного сложнее, как я могу добиться этого должным образом?