Javascript 您能否为grep生成动态和多个条件?

Javascript 您能否为grep生成动态和多个条件?,javascript,jquery,json,Javascript,Jquery,Json,我有一些JSON数据,我想用一些下拉列表进行过滤。不是所有的下拉列表都会被填充,因此当我运行下面的grep时,它不会返回我想要的所有结果 首先,我将每个下拉列表的选定值放入一个变量中。如果选择了第一个索引,则变量为null。然后我进行过滤,但是如果任何变量为null(意味着下拉列表没有更改),它会将null值传递到grep条件中,从而不会返回正确的数据。有没有一种方法可以基于空变量生成我的多个条件?我知道我可以在嵌套的if语句之后进行嵌套,但这似乎效率不高 var selectedVoltage

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

首先,我将每个下拉列表的选定值放入一个变量中。如果选择了第一个索引,则变量为null。然后我进行过滤,但是如果任何变量为null(意味着下拉列表没有更改),它会将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?
            });
var selectedVoltage=($selectVoltage[0]。selectedIndex>0)$选择voltage.val():空;
var selectedMaxLPA=($selectMaxLPA[0]。selectedIndex>0)$选择maxlpa.val():null;
var selectedFluidLevel=($selectFluidLevel[0]。selectedIndex>0)$选择FluidLevel.val():null;
var filtered=$.grep(json,函数(产品){
返回产品。电压===所选电压和

product.lpa测试变量是否已设置,并且仅在以下情况下进行比较:

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?
});
var filtered=$.grep(json,函数(产品){
返回(selectedVoltage==''| | selectedVoltage===null | | | product.voltage===selectedVoltage)&&

(selectedMaxLPA==''| | selectedMaxLPA===null | | | product.lpa我就是这么做的,但是如果我只为电压选择一个值,它不会返回任何结果。它应该返回我选择的所有电压,而不过滤其他两个字段。除了空字符串之外,我还添加了测试
null
的代码。啊,你是绝对的非常正确!这是一个字符串,所以将其从null改为空
'
很有效。谢谢!!