Answer the question
In order to leave comments, you need to log in
What's the best practice to filter data by multiple values?
Let's say we have an object that simply stores the values of checkboxes and is updated accordingly every time any checkbox changes:
let state = {
's': false,
'm': false,
'l': false
} //для абстракции, s / m / l - размеры одежды
[...{
value: ...,
<b>size: 's'</b>
value: ...
}...]
function filterItems() {
let filtered = [];
filtered = filtered.concat(items.filter((item) => {
if (state['s'] && item.size === 's') {
return item;
}
}))
filtered = filtered.concat(items.filter((item) => {
if (state['m'] && item.size === 'm') {
return item;
}
}))
filtered = filtered.concat(items.filter((item) => {
if (state['l'] && item.size === 'l') {
return item;
}
}))
return filtered;
}
Answer the question
In order to leave comments, you need to log in
Как-то уж очень громоздко выглядит. Если я правильно понял, то то, что вам нужно, делается куда проще:
const filterItems = () => items.filter(n => state[n.size]);
Это называется фасетный поиск. Есть готовые библиотеки и фреймворки.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question