0

私は次のように構造化されたオブジェクトを持っています:

{
  _id: {
    $oid: 'foo',
  },
  data: {
    john: {
     _doe: {
       $oid: 'bar'
     }
    }
  }
}

次に、このオブジェクトをマッサージして、次のようにします。

{
  _id: 'foo',
  data: {
    john: {
     _doe: 'bar'
    }
  }
}

つまり、のすべてのインスタンスは、$oidその値を1レベル上(またはそのようなもの)に移動する必要があります。それは多くのレベルで発生する可能性があります。

私は試した:

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);

しかし、それは失敗し、私はそれを回避することができません...

4

1 に答える 1

3

あなたはほとんどそれを持っています、ただ小さな修正が必要でした:

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]);
于 2012-08-20T09:37:47.730 に答える