Я хочу построить фильтр, который в зависимости от того, сколько правил, он фильтрует массив объектов на основе этих правил.
У меня есть массив таких объектов:
const myList = [
{name: 'Joe',
sex: 'male',
isStared: false,
},
{name: 'Ann',
sex: 'female',
isStared: true,
},
{name: 'Gil',
sex: 'female',
isStared: true,
},
]
У меня также есть объект с правилами для fillter, который задает пользователь, например, это может быть:
const rules = {sex: 'male', isStared: 'false'}
Я не хочу жестко его кодировать, чтобы он специально проверяет sex === 'male'
или isStared === true
Но я хочу, чтобы, если правил было больше, он проверял их и возвращал только те, которые, например, являются мужскими и смотрятся.
У меня сейчас жестко закодированная фильтрация, но если правила изменятся, она сломается:
myList.filter(friend => friend.sex === action.filterQuery.sex && friend.sex.isStared === action.filterQuery.sex)
Есть идеи, как этого добиться?
Спасибо.