从数组EXTJS中删除多个元素

时间:2016-06-17 21:23:55

标签: javascript arrays extjs

我知道从数组中删除元素的传统方法,但我想知道EXTjs中是否有任何专业提示/方法可以删除数组中的选定项目。

var array = 
 [{id:"week", address : "something"},
  {id: "month", address : "something2"},
  {id:"year", address : "something23"},
  {id:"ext-comp-12", address : "something23"},
  {id:"ext-comp-13", address : "something23"},
  {id:"ext-comp-132", address : "something23"}
 ]

我想删除元素:列表中的上周,上个月,前一天。我无法使用索引来引用remove元素的位置,因为它们是动态创建的。这个array.filter(e => e.id== "week");对我不起作用。 知道其他任何方法吗?thx

1 个答案:

答案 0 :(得分:0)

我认为更简洁的方法是用过滤后的数组替换原始数组,因为这是功能方法:array = array.filter(e => e.id== "week");

要从原始数组中删除多个项目,您必须迭代并使用“splice”,“erase”,“remove”......来自javascript Array或Ext.Array的ecc。

var toRemove = array.filter(e => e.id == "week");
toRemove.forEach(e => Ext.Array.remove(array, e));

另一种方法可能是使用ExtJs集合而不是javascript数组。 Ext.data.StoreExt.util.MixedCollection都有批量删除项目的方法。

旧答案

数组拼接的ExtJs替代方法是Ext.Array.erase

  

从数组中删除项目。这在功能上等同于Array的splice方法,但可以解决IE8的splice方法中的bug,并且不会复制已删除的元素以便返回它们(因为它们经常被忽略)。

例如:Ext.Array.erase(array, array.findIndex(f => f.id == "week"), 1);