你能为grep生成动态和多个条件吗?

时间:2014-11-06 22:53:28

标签: javascript jquery json

我有一些JSON数据,我想用几个下拉列表进行过滤。并非所有下拉列表都会填充,因此当我运行下面的grep时,它不会返回我想要的所有结果。

首先,我将每个下拉列表的选定值放入变量中。如果选择第一个索引,则变量为null。然后我进行过滤,但如果任何变量为空(意味着下拉列表未被更改),则会将空值传递给grep条件,从而不返回正确的数据。有没有办法根据变量为null生成我的多个条件?我知道我可以在嵌套的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 个答案:

答案 0 :(得分:1)

测试变量是否已设置且仅进行比较:

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?
});