大家好我正在使用$.grep()
在json对象中创建一个过滤器,问题是有时过滤器是null
,我必须测试过滤器是否确实存在。如果有更多的过滤器,我怎样才能使这些代码更好,谢谢。
data.result = $.grep(this.Doutores, function (e, index) {
if (data.descontos)
return e.descontos == data.descontos;
});
data.result = $.grep(this.Doutores, function (e, index) {
if (data.especialidade)
return e.especialidade == data.especialidade;
});
data.result = $.grep(this.Doutores, function (e, index) {
if (data.preco)
return e.preco == data.preco;
});
data.result = $.grep(this.Doutores, function (e, index) {
if (data.proftipo)
return e.proftipo == data.proftipo;
});
答案 0 :(得分:1)
我认为更好的代码是:
var filterBy = ['descontos', 'especialidade', 'preco', 'proftipo'];
var doutores = this.Doutores;
filterBy.forEach(function(filter){
data.result = $.grep(doutores, function (e, index) {
if (data[filter])
{
return e[filter] == data[filter];
}
}
这样,您可以在filterBy
数组中添加任意数量的过滤器,它将遍历所有过滤器。
您还可以阅读有关函数组合的内容 - 您可以将所有过滤器函数放入一个“mega”过滤器中,然后只过滤一次数组(这将使您的代码更有效)。