path: 'path1',
role:['user1'],
subRoutes: [
{
role:['user1],
path: 'path2',
subRoutes: [
{
path: 'path3',
subRoutes: [
{
path: 'add',
role:['user2']
}
]
},
{
path: 'path4'
},
{
path: 'path5'
},
]
}
]
}
]
А как можно отфильтровать этот массив со всеми вложенными массивами по role=user1?
function filterRoutesByRole(routes, role) { const filteredRoutes = []; for (const route of routes) { let shouldInclude = false; // Проверяем роль для текущего маршрута if (!route.role || route.role.includes(role)) { shouldInclude = true; } // Проверяем наличие вложенных маршрутов if (route.subRoutes) { route.subRoutes = filterRoutesByRole(route.subRoutes, role); if (route.subRoutes.length > 0) { shouldInclude = true; } } // Включаем маршрут, если роль соответствует if (shouldInclude) { filteredRoutes.push(route); } } return filteredRoutes; }
Обсуждают сегодня