@Kirill-Gorelov
С ума с IT

JavaScript поиск с динамическими параметрами?

Привет парни.
Подскажите как сделать поиск в объекте с динамическими условиями параметра?
Вот мой объект.
[{"prop":{"color":{"value":10},"diametr":{"value":15},"size":{"value":2}},"name":"результат 1"},{"prop":{"color":{"value":15},"diametr":{"value":17},"size":{"value":8}},"name":"результат 2"},{"prop":{"color":{"value":19},"diametr":{"value":17},"size":{"value":8}},"name":"результат 3"}]


Найти по одному параметру, не проблема.
А вот как сделать, что бы динамический подставлялся фильтр по двум и более параметрам, не понимаю.
Предположим в одном случае мне надо найти "size" == 8, как я уже говорил, не проблема. А вот найти "size" == 8 и "color" == 15, одновременно, у меня проблема. Потому что size и color динамические параметры к ним может добавиться и diametr.
  • Вопрос задан
  • 181 просмотр
Решения вопроса 2
@dimoff66
Кратко о себе: Я есть
const data = [
  {"prop":{"color":{"value":10},"diametr":{"value":15},"size":{"value":2}},"name":"результат 1"},
  {"prop":{"color":{"value":15},"diametr":{"value":17},"size":{"value":8}},"name":"результат 2"},
  {"prop":{"color":{"value":19},"diametr":{"value":17},"size":{"value":8}},"name":"результат 3"}
]

const search = filter => 
  Object.entries(filter).reduce((agg, [key, value]) => 
    agg.filter(v => v.prop[key].value === value)    
  , data)


console.log(search({ size: 8 }).map(v => v.name)) // ["результат 2", "результат 3"]
console.log(search({ size: 8, color: 15 }).map(v => v.name)) // ["результат 2"]
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Не успел ответить, отвлекли. Ладно, все равно выложу свой вариант:
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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