Отсеивание по категориям React

171
05 октября 2021, 03:10

Привет! Есть такая проблема, есть категории(тип, торговая марка) у них есть подкатегории. Условный бренд а, б, в. Также и у типа(условный а, б, в). Всё эти категории выражены чекбоксами. Я храню их положение в ректовском состоянии

    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);

Но этот код трудно масштабировать, если более элегантное решение этой проблемы?? Заранее спасибо!

READ ALSO
AJAX передает пустой $_POST

AJAX передает пустой $_POST

Всем доброго дня!

110
Обработчик Javascript

Обработчик Javascript

Господа, подскажите где почитать реализацию идеи:

79
Правильно ли использовать display для меню?

Правильно ли использовать display для меню?

Простой и краткий вопрос, правильно ли для реального сайта использовать для закрытия и открытия меню dislay: block/none корректно это или нужно делать...

296