Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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
Javascript 从存储中删除多个记录的最佳方法是什么?extjs_Javascript_Extjs_Extjs4_Extjs5 - Fatal编程技术网

Javascript 从存储中删除多个记录的最佳方法是什么?extjs

Javascript 从存储中删除多个记录的最佳方法是什么?extjs,javascript,extjs,extjs4,extjs5,Javascript,Extjs,Extjs4,Extjs5,在extjs中删除具有条件的多个记录的最佳方法是什么 例如: var store = Ext.create('Ext.data.Store', { data: [ {name: 'Ed', age: 21}, {name: 'Tommy', age: 15}, {name: 'Aaron', age: 18}, {name: 'John', age: 22} ] }); 我想删除“年龄”小于20的记录(在本例中为“

在extjs中删除具有条件的多个记录的最佳方法是什么

例如:

var store = Ext.create('Ext.data.Store', {
    data: [
        {name: 'Ed', age: 21},
        {name: 'Tommy', age: 15},
        {name: 'Aaron', age: 18},
        {name: 'John', age: 22}
    ]
});

我想删除“年龄”小于20的记录(在本例中为“Tommy”和“Aaron”)。这个问题可能与如何找到多个记录相同,这是一个非常重要的条件。

您可能不希望删除所有记录,而只是迭代并删除匹配的记录

for ( var i = store.data.length; i--; ) {
    if ( store.data[i].age > 20 ) store.removeAt(i);
}

仅使用publicAPI,请记住,您可能不想直接筛选存储或逐个删除项目,因为这将触发任何连接的UI组件上不必要的重画-您可以使用以下方法:

var subCollection=store.getData().createFiltered(函数(项){
返回项目。获取('age')<20;
});
store.remove(subCollection.getRange());
在4、5和6中工作。

另一种方法:

// get records..

        records.forEach(function (record) {
            if (record.getData().age < 20) {
                store.remove(record);
            }
        });
//获取记录。。
记录。forEach(函数(记录){
if(record.getData().age<20){
存储、删除(记录);
}
});

我不想移除所有。它可能不起作用,因为如果在迭代中删除记录,索引也会改变。但是你的代码的一个基本概念是我想做的,这正是我想做的。Store#getData and Collection#createFiltered在ext 5之后可用。@KoheiMikami噢,很抱歉我错过了ext-4标记-我想你可以模仿与
Store.getRange
ext.Array.filter
相同的行为以实现向后兼容性。
// get records..

        records.forEach(function (record) {
            if (record.getData().age < 20) {
                store.remove(record);
            }
        });