Removing records that exist in an array from ExtJS store

user1640256 picture user1640256 · Aug 13, 2014 · Viewed 10k times · Source

I have a store and an array. I want to remove records from the store if that record's value matches with values in the array. Following is is the code I am trying but it's not working. Can anyone suggest the correct way?

'store' is the actual store and 'filterItems' is the array of records I want to remove from 'store'.

    store.each(function (record) {
        for (var i = 0; i < filterItems.length; i++) {
            if (record.get('ItemId') === _filterItems[i].get('ItemId')) {
                itemIndex = store.data.indexOf(record);
                store.removeAt(itemIndex );
            }
        }
    });

Answer

JuHwon picture JuHwon · Aug 13, 2014

Not sure about your code because i dont know all variables. Though its recommended to use the store.getRange() fn and iterate the array via for loop. Its better for performance.

var storeItems = store.getRange(),
    i = 0;

for(; i<storeItems.length; i++){     
   if(Ext.Array.contains(filterItemIds, storeItems[i].get('id')))
      store.remove(store.getById(storeItems[i].get('id')));            
} 

Here is an example which i tried right now and it works well.

https://fiddle.sencha.com/#fiddle/8r2