2014-11-06 2 views
0

У меня есть данные JSON, которые я хочу фильтровать с помощью нескольких выпадающих меню. Не все выпадающие меню будут заполнены, и из-за этого, когда я запускаю grep ниже, он не возвращает все результаты, которые я хочу.Можете ли вы генерировать динамические и множественные условия для grep?

Сначала я помещаю выбранное значение каждого выпадающего списка в переменную. Если выбран первый индекс, переменная имеет значение null. Затем я фильтрую, но если какая-либо из переменных равна нулю (это означает, что выпадающий список не был изменен), он передает нулевое значение в условие grep, тем самым не возвращая правильные данные. Есть ли способ генерировать мои множественные условия на основе переменных, которые являются нулевыми? Я знаю, что я мог бы делать вложенные после вложенных операторов if, но это не кажется эффективным.

var selectedVoltage  = ($selectVoltage[0].selectedIndex > 0) ? $selectVoltage.val() : null; 
var selectedMaxLPA  = ($selectMaxLPA[0].selectedIndex > 0) ? $selectMaxLPA.val() : null; 
var selectedFluidLevel = ($selectFluidLevel[0].selectedIndex > 0) ? $selectFluidLevel.val(): null; 

var filtered = $.grep(json ,function(product) { 
     return product.voltage === selectedVoltage && 
       product.lpa <= selectedMaxLPA && 
       product.fluid_level <= selectedFluidLevel; 
       //is it possible to dynamically generate these conditions? 
      }); 

ответ

1

Test установлен ли переменная и только сделать сравнение, если оно:

var filtered = $.grep(json ,function(product) { 
    return (selectedVoltage === '' || selectedVoltage === null || product.voltage === selectedVoltage) && 
      (selectedMaxLPA === '' || selectedMaxLPA === null || product.lpa <= selectedMaxLPA) && 
      (selectedFluidLevel === '' || selectedFluidLevel === null || product.fluid_level <= selectedFluidLevel); 
      //is it possible to dynamically generate these conditions? 
}); 
+0

я сделал именно это, однако, если бы я только выбрать значение напряжения не возвращает никаких результатов. он должен вернуть все, что имеет напряжение, которое я выбрал, без фильтрации для двух других полей. – drpcken

+0

Я добавил код для проверки на 'null' в дополнение к пустым строкам. – Barmar

+0

Ahhh вы абсолютно правы! Это строка, которая меняет ее с нуля на пустой '' ''. Спасибо!! – drpcken

Смежные вопросы