如何通过检查数组中的测试条件来从对象中检索值

时间:2017-04-14 12:38:06

标签: javascript arrays for-loop

我有一个像

这样的数组

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.

2 个答案:

答案 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]]);