Всем привет, столкнулся со следующей задачей в которой мне нужен совет:
Существует JSON объект который имеет элементы с множеством свойств, некоторые из которых имеют значение 1 или 0. Моя задача отфильтровать JSON объект по нажатию кнопок соответствующих свойств объекта. Например, нажата кнопка wifi, значение элемента переходит в 1 и затем считываются состояние фильтров и выполняется поиск по объекту. Состояние считывается из значений кнопок и выглядит следующим образом: 111 - все нажаты, 000 - ничего не нажато,100 - нажата первая кнопка.
Вот кусочек кода, как сейчас реализовано:
rest = $.grep(restaurants, function(e){
switch (state_of_buttons) {
// All buttons are pressed
case '111':
if (city_id != 0) {
return (e.city_id == city_id);
} else {
return e ;
}
break
// There's no pressed buttons
case '000':
if (city_id != 0) {
return (e.car_distribution == route && e.round_the_clock == schedule && e.wifi == wifi && e.city_id == city_id);
} else {
return (e.car_distribution == route && e.round_the_clock == schedule && e.wifi == wifi);
}
break
А теперь суть проблемы - такой подход плохой, при добавлении всего 1 кнопки (сервиса по которому будет фильтроваться JSON объект) количество перестановок становится равным 16 - все это оформлять довольно тяжело да и странно, на мой взгляд.
Пожалуйста поделитесь своими соображениями на счет оптимального способа построения сложного условия. Что то не хочется делать через 0000,1111,0101,1000 и так далее....