Нда, действительно проблема.... Составные условия не могу использовать при таком подходе. Как думаете есть возможность построить условное выражение с любым количеством операндов до фильтрации в grep. Меня что то этот путь в тупик загнал:
function restaurants_filter(restaurants)
{
var active_elements = [
function (e) { return e.car_distribution == 1; },
function (e) { return e.round_the_clock == 1; },
function (e) { return e.wifi == 1; },
function (e) { return e.promo == 1; }
];
var inactive_elements = [
function (e) { return e.car_distribution == 0; },
function (e) { return e.round_the_clock == 0; },
function (e) { return e.wifi == 0; },
function (e) { return e.promo == 0; }
];
var route = $('#route').val();
var wifi = $('#wifi').val();
var schedule = $('#schedule').val();
var promo = $('#promo').val();
var city_id = $('.styled-select').val();
var conditions = [];
// Determine buttons state
var buttons_state = ''+ route +'' + ''+ schedule +'' +''+ wifi +'' + ''+ promo +'' ;
// Accumulate conditions
for ( var i = 0; i < active_elements.length; i++ ) {
if (buttons_state.charAt(i) != '0'){
conditions.push(i);
}
}
var rest = $.grep(restaurants, function (e) {
for ( var i = 0; i < conditions.length; i++ ) {
return active_elements[conditions[i]](e);
}
return rest
}
Примерно вот так нужно реализовать, но возникают сразу 2 вопроса: return в цикле внутри grep - он же применяется последний и оператор && между вызовами функций не поставить. 2-ой - есть ли возможность в JS автоматом поставить логические операторы между всеми элементами массива записав это как единое логическое выражение? к примеру:
function [0](e) && function [1](e) && ....function [n](e)
PS: 2-ой массив в дальнейшем будет использоваться для автоматической генерации дополнительных условий о которых я писал выше(из 1011 - 1000,0001 и т.д.)