@Nivaech

Как к property объекта привязать два разных значения для последующего фильтра?

Есть простая база данных, которая сначала фильтруется, а потом методом map рендерится на страницы определенных категорий. Все это имеет приблизительно такой вид:

export const items = [
  {
    id: 1,
    title: "some title",
    category: "some category",
    color: "yellow",
    image: "some url"
  },
  {
    id: 2,
    title: "some title 2",
    category: "some category 2",
    color: "blue",
    image: "some url"
  },
]


В общем, работаю над фильтрами, которые берут определенное значение и выводят соответствующий под них результат. Указал в фильтре "Color - blue", и отображаются только объекты, в базе которые прописано, что они синие. Но иногда одним цветом не ограничиться, и нужно, чтобы, например, один предмет отображался и как синий, и как красный, потому как цвет его неоднородный. Можно ли как-то в рамках подобной базы товаров внести в одну категорию (как цвет, или размер, например, потому как размеров одного товара может быть несколько) несколько значений, чтобы они фильтровались и как одни, и как другие?
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 2
joeberetta
@joeberetta Куратор тега JavaScript
Читай: https://epdf.pub/google-for-dummies.html
Может значения свойств хранить как массив? И собственно от этого плясать. Как я понимаю, элемент может состоять в нескольких категориях(к примеру как вопросы, которые в тостере и задаются, могут быть отмечены несколькими тегами)

З.ы. Будет плюсом, если предоставите сам код фильтра. Проще будет сориентировать
Ответ написан
Комментировать
@Ostic
Программист - любитель
используйте lodash или ramda
можно достаточно сложные цепочки и конвейеры строить
mixin({
'from': chain,
'select': map,
'where': filter,
'sortBy': sortByOrder 
});
from(items)
  .where( color==='blue' || color==='red' )
  .sortBy(title)
  .select(item=><div>item.category</div>)
  .value()

за работоспособность кода не отвечаю, тк на данный момент не в контексте, а проверять времени нет, но суть такая... можно и по-другому, через flow.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы