我有一堆存儲在一個對象中的過濾標準。標準不時變化,所以我不能有一個靜態過濾器(即:price > 5 && price < 19 && ...
)。基於動態標準的高效陣列過濾
var criteria = {
price: {
min: 5,
max: 19
},
age: {
max: 35
}
};
我然後有一個循環的設置通過基於標準的陣列,以篩選和返回經過濾的數組:
var filtered = [];
var add = true;
for (var i=0; i < data.length; i++){
add = true;
var item = data[i];
for (var main in criteria){
for (var type in criteria[main]){
if (type === 'min') {
if (!(item[main] > criteria[main][type])) {
add = false;
break;
}
} else if (type === 'max') {
if (!(item[main] < criteria[main][type])) {
add = false;
break;
}
}
}
}
if (add) {
filtered.push(item);
}
}
是否有一個更有效的方式來設置的時間提前的濾波器條件句(即:item.price > 5 && item.price < 19 && item.age < 35
)然後過濾數組?與我目前正在做的以及在每個數組循環中引用對象相反 - 這對所有的條件和子循環來說都是低效的。
查看我的jsbin - http://jsbin.com/celin/2/edit。
您是否考慮過下劃線的過濾器和鏈接? – Dinesh 2014-11-23 00:20:37