Привет! Есть такая проблема, есть категории(тип, торговая марка) у них есть подкатегории. Условный бренд а, б, в. Также и у типа(условный а, б, в). Всё эти категории выражены чекбоксами. Я храню их положение в ректовском состоянии
const [brand, setBrand] = useState({
all: true,
a: false,
b: false,
c: false,
d: false
});
const [type, setType] = useState({
all: true,
a: false,
b: false,
c: false,
d: false,
});
У меня есть функция которая достает из объекта массив с ключами у которых значение true
function getArray(array) {
let arr = [];
for (const key in array) {
if (key !== "all" && array[key] === true) {
arr.push(key);
}
}
return arr;
}
Все продукты хранятся в одном состоянии в виде колекции. Мне нужно их отсортировать, я написал такой код(filter из loadsh)
const markArr = getArray(brand);
const typeArr = getArray(type);
const arr = filter(products, function(o){
if(typeArr.length === 0 && markArr.length > 0){
if(markArr.includes(o.tradeMark))
return o;
} else if(typeArr.length > 0 && markArr.length === 0){
if(typeArr.includes(o.type))
return o;
} else if(typeArr.length > 0 && markArr.length > 0){
if(typeArr.includes(o.type) && markArr.includes(o.tradeMark))
return o;
} else {
return products;
}
})
setFiltered(arr);
Но этот код трудно масштабировать, если более элегантное решение этой проблемы?? Заранее спасибо!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Простой и краткий вопрос, правильно ли для реального сайта использовать для закрытия и открытия меню dislay: block/none корректно это или нужно делать...