如何使用$.grep()应用多个筛选器
How to apply multiple filters using $.grep()
大家好,我正在使用$.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
数组中添加任意数量的过滤器,它将通过所有过滤器。您还可以阅读有关函数组合的内容——您可以将所有的过滤函数组合成一个"超级"过滤器,然后只过滤一次数组(这将使您的代码更加高效)。
相关文章:
- 拉力赛应用程序 SDK 2.0:无法按日期筛选
- 在客户端应用程序中按角色筛选UI的策略
- Datatables-仅应用于某些表的筛选器
- 如何将筛选器应用于特定的数据表
- Rally自定义应用程序复选框筛选器不工作
- 在页面加载时清除/重新应用表分类器筛选
- 使用 filterBy() 应用筛选器时,从 ExtJs 存储中清除筛选器的最快方法
- 多次应用日期筛选器
- 如何筛选主干.js集合和重新呈现应用视图
- 如何在 Ember 应用中实现嵌套全局筛选器
- 需要将应用于图像的筛选器样式转换为特定的 JSON 格式
- 如何使用$.grep()应用多个筛选器
- 筛选时,ng中应用的条件类重复使用$index不一致
- 使用IE筛选器时不应用悬停样式,并且无法单击元素
- 如何使用Sencha触摸应用程序在列表中按id进行筛选
- Backgrid筛选器在主干应用程序中不起作用
- DataTables未应用每页筛选
- 在一个位置显示应用于多个图形的筛选器
- 如何使用淘汰同时应用筛选和分页
- 修改筛选器,使其仅应用于表中的可见行