Показать сообщение отдельно
  #5 (permalink)  
Старый 18.01.2013, 19:12
Новичок на форуме
Отправить личное сообщение для Уханов Сергей Посмотреть профиль Найти все сообщения от Уханов Сергей
 
Регистрация: 17.01.2013
Сообщений: 5

Нда, действительно проблема.... Составные условия не могу использовать при таком подходе. Как думаете есть возможность построить условное выражение с любым количеством операндов до фильтрации в 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 и т.д.)

Последний раз редактировалось Уханов Сергей, 18.01.2013 в 19:16.
Ответить с цитированием