I am trying to find the best way (minimal code) to filter a recursive list of items based on some condition. The list describes some navigation that contains multiple sections and each section contains navigation items (where each navigation item can contain a recursive amount of navigation items).
Example:
const navSections = [{
title: 'Section A',
items: [
{
title: 'A1',
permission: 'Moderator'
},
{
title: 'A2',
permission: 'Moderator',
items: [{
title: 'A21',
permission: 'Admin'
},
{
title: 'A22',
permission: 'Admin'
}]
}]
},
{
title: 'Section B',
items: [
{
title: 'B1',
permission: 'User'
},
{
title: 'B2',
permission: 'User'
},
{
title: 'B3',
permission: 'Admin'
}]
}]
The user has an array of permissions and I want to filter out all items that are not in the set of permissions of the user.
const userPermissions = ['Moderator', 'User']
I am not searching for a solution that simply loops through the elements; I can code that myself.