Javascript 从存储中删除多个记录的最佳方法是什么?extjs
在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的记录(在本例中为“
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);
}
});