I want to be able to filter a list of users by a list of roles a user may have.
A demonstration of the behaviour I am trying to create. This code creates the results I am expecting but obviously isn't very practical when dealing with an undetermined number of selected filters.
const users = result.data.filter(({roles}) => { switch (selections.length) { case 1: return roles.find((role) => role.id === filter[0]); case 2: return ( roles.find(({id}) => id === filter[0]) && roles.find(({id}) => id === filter[1]) ); case 3: return ( roles.find(({id}) => id === filter[0]) && roles.find(({id}) => id === filter[1]) && roles.find(({id}) => id === filter[2]) ); case 4: return ( roles.find(({id}) => id === filter[0]) && roles.find(({id}) => id === filter[1]) && roles.find(({id}) => id === filter[2]) && roles.find(({id}) => id === filter[4]) ); default: return true; //If there are no items in Select return all users. } }); Any help is appreciated.
Edit - restructured users, roles.