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