Здравствуйте, вообщем не выкупю, как работает система фильтрации товаров в интернет магазинах.
Допустим в базе данных у меня есть
категория "Смартфоны"
{
smartphones: [
{
"name": "iPhone 12 Mini",
"price": 62000,
"color": "black",
"manufacturer": "Apple"
},
{
"name": "Samsung Galaxy Fold",
"price": 74000,
"color": "white",
"manufacturer": "Samsung"
},
..........
]
}
Теперь я хочу понять откуда взять данные для фильтрации этих телефонов, вот мои варианты:
1. Нужно создать алгоритм, который пробежит по массиву телефонов и достанет все ключи и значения, а на их основе сгенерирует еще один массив/объект, для фильтра примерно с такой структурой:
dataForFilter = {
color: ['black', 'white'],
manufacturer: ['Apple', 'Samsung']
...
}
Но есть минусы: Во первых это выглядит сложно, а во вторых я пока не понимаю, как сделать типы этим фильтрам, например как "объяснить" алгоритму какой ключ должен быть как чекбокс, а какой должен быть как инпут, чтобы потом этот фильтр зарендерить на страницу.
2. Создавать для каждой категории товаров (Телефоны, ноутбуки и тд.) свой фильтр вручную, который будет выглядеть как-то так:
{
smartphones: {
productList: [ ... тот же массив телефонов ... ],
productFilter: [
{
name: "color",
type: "checkbox",
value: ["white", "black"]
},
{
name: "manufacturer",
type: "checkbox",
value: ["Apple", "Samsung"]
}
],
}
}
А может вообще ни один из моих способов и близко не подходит.
Программисты, которые понимают, как работает система фильтрации товаров, можете пожалуйста подсказать, данные для фильтра как-то автоматические генерируются или где-то сидит какой нибудь junior-бедолага и заполняет данные для фильтра вручную?
А еще лучше, если вы покажете какой нибудь фрагмент кода)