Prototypejs 如何删除从每个枚举器返回的元素?

Prototypejs 如何删除从每个枚举器返回的元素?,prototypejs,Prototypejs,我有一个包含对象的数组。每个对象都有一个id字段。我想实现一个函数,通过指定id来删除一个对象。我使用数组上prototypejs中的.each单步遍历对象并检查id。如果匹配,我如何实际删除它?我尝试将从.each返回的对象设置为null,但使用FireBug,我发现该对象在数组中仍然是相同的 编辑:数组中的对象可能依次包含带有可能需要删除的对象的数组。我的函数很适合查找要删除的对象,我使用splice删除它(使用计数器)。在我看来,.each(以及其他枚举数,如.reject)返回对象的一个

我有一个包含对象的数组。每个对象都有一个id字段。我想实现一个函数,通过指定id来删除一个对象。我使用数组上prototypejs中的.each单步遍历对象并检查id。如果匹配,我如何实际删除它?我尝试将从.each返回的对象设置为null,但使用FireBug,我发现该对象在数组中仍然是相同的

编辑:数组中的对象可能依次包含带有可能需要删除的对象的数组。我的函数很适合查找要删除的对象,我使用splice删除它(使用计数器)。在我看来,.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);

}

当您想对每个对象执行某些操作时,请仅使用
。each
。从语义上讲,您应该在这种情况下使用。想一想,当你必须在几年后修复它时,理解它会变得多么容易

函数deleteById(对象,id){
返回对象。拒绝(函数(obj){
返回obj.id==id;
}).每个功能(obj){
对象删除子对象(id);
});
}

在我看来,您的函数会返回所有与id不匹配的对象。是否打算使用返回的数组替换当前数组?在我的实现中,对象本身可能有对象数组。我将编辑我的问题以澄清。是的,这是我的本意。或者,您可以将其作为
Array.prototype
的方法,并以链接的方式使用它。