【发布时间】:2016-11-28 06:44:21
【问题描述】:
我得出的结论是,这几乎是不可能的。在下图中,我试图在不知道其父项的键的情况下删除具有 36 个键的对象。
我能够使用以下函数找到键为 36 的对象(其中 o 是对象,id 是键),但是,我无法看到从对象。
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] 将其从实际对象中删除。
【问题讨论】:
标签: javascript object recursion multidimensional-array