3 回答

TA贡献1784条经验 获得超7个赞
暴力筛选,能做的只是优化暴力程度;
let router = [
{
path: '/hello',
icon: 'hammer',
name: 'hello',
title: '你好',
children: [
{ path: 'index', title: '你好', name: 'hello_index' },
{ path: 'index1', title: '你好1', name: 'hello_index1' }
]
},
{
path: '/hello1',
icon: 'hammer',
name: 'hello1',
title: '你好',
children: [
{ path: 'index2', title: '你好2', name: 'hello_index2' },
{ path: 'index3', title: '你好3', name: 'hello_index3' },
{ path: 'index4', title: '你好3', name: 'hello_index4' }
]
},
{
path: '/hello2',
icon: 'hammer',
name: 'hello2',
title: '你好',
children: [
{ path: 'index4', title: '你好4', name: 'hello_index4' },
{ path: 'index5', title: '你好5', name: 'hello_index5' }
]
}
]
let routernone = {
'/hello2': [],
'/hello1': ['index2', 'index3']
}
router = router.filter((route, index) => {
if (routernone[route.path]){
if (routernone[route.path].length > 0) {
route.children = route.children.filter((child)=> {
return routernone[route.path].indexOf(child.path) <= -1
})
return true
} else {
return false
}
} else {
return true
}
})
console.log(router)

TA贡献2003条经验 获得超2个赞
为什么要多加一个用于筛选的呢,直接在第一个对象列表中加标志不就好了,
const router = [
{
path: '/hello',
icon: 'hammer',
name: 'hello',
title: '你好',
children: [
{ path: 'index', title: '你好', name: 'hello_index' },
{ path: 'index1', title: '你好1', name: 'hello_index1' }
]
},
{
path: '/hello1',
icon: 'hammer',
name: 'hello1',
title: '你好',
children: [
{ path: 'index2', title: '你好2', name: 'hello_index2',meta: {noshow:true} },
{ path: 'index3', title: '你好3', name: 'hello_index3' ,meta: {noshow:true}},
{ path: 'index4', title: '你好3', name: 'hello_index4' }
]
},
{
path: '/hello2',
icon: 'hammer',
name: 'hello2',
title: '你好',
meta: {noshow:true},
children: [
{ path: 'index4', title: '你好4', name: 'hello_index4' },
{ path: 'index5', title: '你好5', name: 'hello_index5' }
]
}
]
在运行时判断一下meta里的noshow是true,就不显示不就好了

TA贡献1790条经验 获得超9个赞
let router = [
{
path: '/hello',
icon: 'hammer',
name: 'hello',
title: '你好',
children: [
{ path: 'index', title: '你好', name: 'hello_index' },
{ path: 'index1', title: '你好1', name: 'hello_index1' }
]
},
{
path: '/hello1',
icon: 'hammer',
name: 'hello1',
title: '你好',
children: [
{ path: 'index2', title: '你好2', name: 'hello_index2' },
{ path: 'index3', title: '你好3', name: 'hello_index3' },
{ path: 'index4', title: '你好3', name: 'hello_index4' }
]
},
{
path: '/hello2',
icon: 'hammer',
name: 'hello2',
title: '你好',
children: [
{ path: 'index4', title: '你好4', name: 'hello_index4' },
{ path: 'index5', title: '你好5', name: 'hello_index5' }
]
}
];
let routernone = [
{ path: '/hello2'}
];
let routernone2 = [
{
path: '/hello1',
children: [
'index2', 'index3'
]
}
];
router = router.filter(item => {
return routernone.findIndex( i => item.path == i.path) == -1;
}).map(item => {
let temp = routernone2.find(i => i.path == item.path);
if(temp){
item.children = item.children.filter(ii => !temp.children.find(iii => iii == ii.path));
}
return item;
});
添加回答
举报