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

标签 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;
});

最佳答案

我认为更好的代码是:

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 数组中添加任意数量的过滤器,它将遍历所有过滤器。 您还可以阅读有关函数组合的内容 - 您可以将所有过滤器函数放入一个“大型”过滤器中,然后仅过滤该数组一次(这将使您的代码更加高效)。

关于javascript - 如何使用 $.grep() 应用多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34695838/

相关文章:

javascript - 在 HTML 中格式化 SPARQL 查询时的 JSON 和 JavaScript 集成

javascript - PhantomJS 网页内存消耗?

php - 如何在 Javascript 中访问 PHP 方法?

javascript - 如何在 vue js 中使用 props 更新子组件的属性?

javascript - 光标变得不允许并且浏览器停止读取鼠标事件?

javascript - 在 jQuery 对象中添加 img 的绝对路径

jQuery 的 :nth-child and :first-child selecting wrong element

php - AJAX url 调用上的多个 PHP 脚本

jquery - 使用 AJAX 在 Rails 中自动保存表单

javascript - 防止用户离开未保存的更改