Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ExtJS存储中删除数组中存在的记录_Extjs_Extjs4.2 - Fatal编程技术网

从ExtJS存储中删除数组中存在的记录

从ExtJS存储中删除数组中存在的记录,extjs,extjs4.2,Extjs,Extjs4.2,我有一个存储和一个数组。如果记录的值与数组中的值匹配,我想从存储中删除记录。下面是我正在尝试的代码,但它不起作用。有人能建议正确的方法吗 “store”是实际存储,“filterItems”是我要从“store”中删除的记录数组 store.each(function (record) { for (var i = 0; i < filterItems.length; i++) { if (record.get('ItemId') === _

我有一个存储和一个数组。如果记录的值与数组中的值匹配,我想从存储中删除记录。下面是我正在尝试的代码,但它不起作用。有人能建议正确的方法吗

“store”是实际存储,“filterItems”是我要从“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 );
            }
        }
    });
store.每个函数(记录){
对于(变量i=0;i
尝试使用存储区()的删除方法


我不确定你的代码,因为我不知道所有的变量。尽管建议使用store.getRange()fn并通过for循环迭代数组。它的性能更好

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')));            
} 
var storeItems=store.getRange(),
i=0;
为了
这是我的示例,如果您的记录与值匹配,则在存储所有项的索引后存储该项的索引并将其删除。

否则,您必须使用for循环并将它们从数组末尾删除。

getRange()返回的数组中元素的索引似乎与store中的索引不同?因为如果您使用store.removeAt(i),它并不总是删除正确的元素。
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')));            
} 
    var indexes = [], i = 0;
    dataviewStore.each(function(item, index){
        if(item) {
            if(item.data.columnId == columnId) {
                indexes[i++] = index;
            }
        }
    }, this);

    dataviewStore.remove(indexes);