I have an array of user's permission:
var permission = ["view_admin", "view_config", ...];
And an array which contains user's menu:
var items = [
{ title: 'a' },
{ title: 'b', rules: 'view_admin', sub: [
{ title: 'ba', rules: 'view_admin1' }
] },
{ title: 'c', sub: [
{ title: 'ca', rules: 'view_config', sub: [
{ title: 'caa', rules: 'view_config1' },
{ title: 'cba' }
] }
] },
{ title: 'd', rules: 'view_other'}
];
I need to :
- If array's object not contains key "rules" maintain the item
- If rules isn't in user's permission, delete the object
- If the rules is into sub and length is equal 0 remove entire sub, therefore remove the item in the sub
So in this case I need to have:
var items = [
{ title: 'a' },
{ title: 'b', rules: 'view_admin'},
{ title: 'c', sub: [
{ title: 'ca', rules: 'view_config', sub: [
{ title: 'cba' }
] }
] }
];
PS: I don't know number of "sub" that might be have...
This is my tried code but not work
var organizeMenu = function(items, permissions) {
for (var i = 0; i < items.length; i++) {
var title = items[i].title;
console.log(title);
if (items[i].rules && items[i].rules != '*') {
if (permissions.indexOf(items[i].rules) < 0) {
console.log("deleted");
delete items[i];
} else {
if (items[i].submenu) {
organizeMenu(items[i].submenu, permissions);
}
}
}
}
return items;
};