С сервера приходят продукты, фильтры и получается в итоге:
const initialState = {
categories: [{id: 1, name: 'Категория-1'}],
products: [
{id: 1, title: 'Продукт-1', price: 1, discount: true, free: false},
{id: 2, title: 'Продукт-2', price: 2, discount: false, free: false},
{id: 3, title: 'Продукт-3', price: 5, discount: true, free: true},
],
filters: {
categories: [{categoryId: 1, isChecked: true}],
promotion: [{id: 1, name: 'discount', value: 'Скидка', isChecked: false}, {id: 2, name: 'free', value: 'Бесплатно', isChecked: false}]
}
}
Как можно отфильтровать продукты по ключу
promotion
из объекта filters.
Конечно было бы проще, если фильтры мне были известны и я просто сделал что то подобное:
promotion: {
isDiscountChecked: false,
isFreeChecked: false
}
const Products = ({products, filters}) => {
return (
<>
{filters.promotion.isDiscountChecked && products.filter(item => item.isChecked === true).map(product => <div>...</div>)}
// ....
</>
);
}
Но как решить данную задачу, если мне неизвестны фильтры заранее?