0
我有一个包含对象的数组。每个对象都有一个id字段。我想实现一个通过指定id来删除一个对象的函数。我使用.each从数组的prototypejs中遍历对象并检查id。如果匹配,我该如何删除它?我已经尝试将.each返回的对象设置为null,但使用FireBug,我发现该对象在数组中仍然是相同的。如何删除每个枚举器返回的元素?
编辑:数组中的对象可能反过来包含与可能需要删除的对象的数组。我的功能很好找到要删除的对象,并使用拼接删除它(使用计数器)。在我看来,.each(和其他枚举类似.reject)返回对象的副本。如果我将对象设置为null,那么在检查时对象仍然在数组中。我如何返回一个对象的引用,当设置为null时,它实际上对数组中的对象进行操作,而不是副本?
下面是函数,该函数DeleteChild,则工作在相同的原理:
function removeControl(controlName) {
var counter = 0;
cont.each(function (existingControl) {
if (existingControl.id == controlName) {
existingControl.destroy();
cont.splice(counter, 1);
}
else { // not found, check control's children
existingControl.deleteChild(controlName);
}
counter++;
}, this);
}
在我看来,你的函数返回所有与id不匹配的对象。你是否打算返回用于替换当前数组的数组?在我的实现中,对象本身可能有对象数组。我会编辑我的问题来澄清。 –
是的,这是我的意图。或者你可以使它成为'Array.prototype'的一种方法,并以链接的方式使用它。 – clockworkgeek