不太确定如何表达这个问题(我确信以前已经以某种形式问过这个问题)。
我的问题本质上如下所示(通过一些写得很糟糕的伪 JavaScript 代码):
var list = []
for (i to somenumber)
list.push(new myObject);
list.foreach(function(item){
if (item.name === 'WhatIAmLookingFor')
item.delete() <--- This needs to remove the object from list
}
因此,正如我令人惊叹的代码所暗示的那样,我希望能够通过调用列表中对象的函数来从列表中删除该项目。
抱歉,如果这是一个无知的问题,但我不知道如何做到这一点。
最佳答案
不要删除项目,而是使用过滤器
仅保留“好的”项目。
var list = [
{ name: 'foo' },
{ name: 'bar' },
{ name: 'removeMe' },
{ name: 'baz' }
];
list = list.filter(function(item) {
return item.name != 'removeMe'
});
document.write(JSON.stringify(list))
“从内到外”删除元素,例如element.removeFrom(list)
,您需要array.splice
:
obj = function(name) {
this.name = name;
this.removeFrom = function(lst) {
for (var i = 0; i < lst.length; ) {
if (lst[i].name == this.name)
lst.splice(i, 1);
else
i++;
}
}
}
a = new obj('a');
b = new obj('b');
c = new obj('c');
x = new obj('remove');
list = [a, b, c, x, x, a, b, c, x]
x.removeFrom(list)
document.write(JSON.stringify(list))
关于Javascript:在对对象的函数调用时从数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25916490/