我有一个这样的对象结构:
{
_id: {
$oid: 'foo',
},
data: {
john: {
_doe: {
$oid: 'bar'
}
}
}
}
现在,我要按摩此对象,使其变为:
{
_id: 'foo',
data: {
john: {
_doe: 'bar'
}
}
}
换句话说,每个
$oid
实例都应将该值上移一个级别(或类似的值)。它可能发生在许多级别。我试过了:
var loop = function(o) {
for ( var i in o ) {
if ( i == '$oid' ) {
o = o[i];
} else if ( typeof o[i] == 'object' ) {
loop(o[i]);
}
}
return o;
}
loop(obj);
但是它失败了,我无法解决……
最佳答案
您几乎拥有了它,只需要一个小修复:
var loop = function(o) {
for ( var i in o ) {
if ( i == '$oid' ) {
o = o[i];
} else if ( typeof o[i] == 'object' ) {
console.log(o[i]);
o[i] = loop(o[i]);
}
}
return o;
}
您需要将循环结果分配给原始对象。
o[i] = loop(o[i]);
关于javascript - 递归对象消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12035079/