我得出的結論是,這幾乎是不可能的。在下圖中,我試圖在不知道其父母的密鑰的情況下使用36 的密鑰刪除對象。 如何刪除多維JavaScript對象中的子對象?
我可以使用下面的函數(其中o是對象,id是關鍵字)找到36鍵的對象,但是,那麼,我無法看到要移除孩子來自對象的對象。
function findById(o, id) {
//Early return
if(o.id === id){
return o;
}
var result, p;
for (p in o) {
if(o.hasOwnProperty(p) && typeof o[p] === 'object') {
result = findById(o[p], id);
if(result){
return result;
}
}
}
return result;
}
在尋找另一個解決方案之前,我想我可能會問SO編程社區的專家。
[更新] 該解決方案其實很簡單(請參閱下面的答案)。我沒有意識到在遞歸的第一級o [p]是對實際對象的引用,這意味着delete o[p]
將它從實際對象中刪除。