我有一些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?
});
答案 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?
});