我知道从数组中删除元素的传统方法,但我想知道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
答案 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.Store
和Ext.util.MixedCollection
都有批量删除项目的方法。
旧答案
数组拼接的ExtJs替代方法是Ext.Array.erase
:
从数组中删除项目。这在功能上等同于Array的splice方法,但可以解决IE8的splice方法中的bug,并且不会复制已删除的元素以便返回它们(因为它们经常被忽略)。
例如:Ext.Array.erase(array, array.findIndex(f => f.id == "week"), 1);