如何使用$ .grep()应用多个过滤器

时间:2016-01-09 16:17:11

标签: javascript jquery

大家好我正在使用$.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;
});

1 个答案:

答案 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”过滤器中,然后只过滤一次数组(这将使您的代码更有效)。