2017-04-14 34 views
-1

測試條件以檢索從對象的值我有一個數組一樣如何通過檢查陣列

filterVal = [AB, BC, DE]; 和數以百萬計的記錄。我需要檢查,如果record.property值與任何filterVal的那麼return true否則返回false匹配。在我的代碼

現在的問題是當迭代2次指數的第一個值被清洗。任何人都可以告訴我如何實現這一點。

我的代碼。

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

難道你不能只使用'indexOf'來檢查數組是否包含該值? – Teemoh

+0

我會首先將'filterVal'數組轉換爲哈希或映射。這將避免您進行數百萬浪費的'indexOf'搜索。 – Redu

回答

1

它在我看來像你使用Extjs,是這種情況?如果是這樣,你可能想標記你的問題。

這裏是我會做:

grid.store.filterBy(function(record){ 
    return filterVal.indexOf(record.data[filterProperty]) !== -1 
}); 
+0

謝謝@Rafael ..它正在工作。 – David

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]]); 
+0

讓我試試這個並回復你。謝謝你的回答。 – David