Как показано на скриншоте, я пытаюсь построить логику фильтра, которую нельзя использовать в backend / sql по другим причинам.
Я получаюДанные продукта и фильтры должны быть добавлены друг к другу.Чтобы добиться фильтрации по 1 идентификатору свойства (например, по идентификатору бренда или идентификатору категории), я построил такую функцию:
multiFilter (arr, filters) {
const filterKeys = Object.keys(filters);
return arr.filter(eachObj => {
return filterKeys.every(eachKey => {
if (!filters[eachKey].length) {
return true;
}
return filters[eachKey].includes(eachObj[eachKey].id);
});
});
}
- Аргумент arr - это массив Product
Аргумент Filters - это информация о том, какие фильтры активны.как например:
{
"brands" : [4,6,8],
"categorys" : [7,2,4,5],
"additives" : [1,2,3,4,6,8,9,54,32,12]
}
это работает, пока фильтруется по идентификатору бренда или идентификатору категории на одном уровне продукта.
что я пытаюсь сделатьТеперь необходимо дополнительно фильтровать продукты, например, по присадкам, которые на один уровень глубже, как вы можете видеть на моем скриншоте.есть идеи как этого добиться?
спасибо