我有一个像
这样的数组 filterVal = [AB, BC, DE];
和数百万的记录。我需要检查record.property
值是否与任何filterVal匹配,然后return true
否则为false。
现在我的代码中的问题是当迭代第二个索引时,第一个值被清除。任何人都可以告诉我如何实现这个目标。
我的代码。
for(var i=0; i<filterVal.length; i++){
grid.store.filterBy(function(record){
debugger;
if(filterVal[i]==record.data[filterProperty])
return true;
else
return false;
});
}
**Note** : When Going to i=2; all data washed away from 1st one.
答案 0 :(得分:1)
在我看来,你正在使用Extjs,是这样的吗?如果是这样,您可能想标记您的问题。
这就是我要做的事情:
grid.store.filterBy(function(record){
return filterVal.indexOf(record.data[filterProperty]) !== -1
});
答案 1 :(得分:1)
我首先将filterBy
数组转换为类似
{ AB: true, BC: true, DE: true }
表现。下面应该做其余的事情。
var filterMap = ["AB", "BC", "DE"].reduce((p,c) => Object.assign(p,{[c]:true}),{});
result = grid.store.filterBy(record => filterMap[record.data[filterProperty]]);