Спасибо за путеводную нить, гражданин-трансгуманист
Буду пытаться реализовать по вашей концепции, нужно будет только додумать некоторые моменты: например, при сочетании фильтров 1101 должны учитываться 1000,0100,0001, 1100, 0101, 1001 иначе фильры будут работать некорректно, т.е. сделать аналог:
case '1101':
return (city_id != 0) ? ((e.round_the_clock == schedule && e.car_distribution == route && e.promo == promo && e.city_id == city_id) ||
(e.round_the_clock == 0 && e.car_distribution == 0 && e.promo == 1 && e.city_id == city_id) ||
(e.round_the_clock == 0 && e.car_distribution == 1 && e.promo == 0 && e.city_id == city_id) ||
(e.round_the_clock == 0 && e.car_distribution == 1 && e.promo == 1 && e.city_id == city_id) ||
(e.round_the_clock == 1 && e.car_distribution == 0 && e.promo == 0 && e.city_id == city_id) ||
(e.round_the_clock == 1 && e.car_distribution == 0 && e.promo == 1 && e.city_id == city_id) ||
(e.round_the_clock == 1 && e.car_distribution == 1 && e.promo == 0 && e.city_id == city_id))
: ((e.round_the_clock == schedule && e.car_distribution == route && e.promo == promo) ||
(e.round_the_clock == 0 && e.car_distribution == 0 && e.promo == 1) ||
(e.round_the_clock == 0 && e.car_distribution == 1 && e.promo == 0) ||
(e.round_the_clock == 0 && e.car_distribution == 1 && e.promo == 1) ||
(e.round_the_clock == 1 && e.car_distribution == 0 && e.promo == 0) ||
(e.round_the_clock == 1 && e.car_distribution == 0 && e.promo == 1) ||
(e.round_the_clock == 1 && e.car_distribution == 1 && e.promo == 0));