3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
暴力篩選,能做的只是優(yōu)化暴力程度;
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貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
為什么要多加一個(gè)用于篩選的呢,直接在第一個(gè)對(duì)象列表中加標(biāo)志不就好了,
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' }
]
}
]
在運(yùn)行時(shí)判斷一下meta里的noshow是true,就不顯示不就好了

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
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;
});
添加回答
舉報(bào)