を構築するためにオブジェクトをリンク:私は何をしようとしているJavascriptを再帰的に私はこのように見える二つのオブジェクト持ってオブジェクトツリー
var cache = {
'39' : { id : 39, name : 'Tom' },
'40' : { id : 40, name : 'David'},
'41' : { id : 41, name : 'Daniel'},
'356': { id :356, grp: 'ROM', fee: '$35'}
}
var tree = {
person : { id : 39 },
memberships : { id : 356 },
}
を引数としてtree
オブジェクトを取る再帰関数を書くことですcache
オブジェクト内の対応するオブジェクトを参照/リンクするデータ構造を生成します。だから最後に私はこのようにユーザー 'Tom'にアクセスできる必要があります:tree.person.name
。
私は2つの理由で再帰を使用しています:それは、ユーザの入力とによって異なり
tree
オブジェクトは、私がここに示されているものよりも方法がより複雑である
-
:私はリンク/参照を行うには、この再帰関数を書いたvar traverse = function (jsonObj) { if(typeof jsonObj == "object") { if(cache[jsonObj.id]){ jsonObj = Ocache[jsonObj.id]; } $.each(jsonObj, function(k, v) { traverse(v); }); } else { // jsonObj is a number or string } }
その後、私は
traverse(tree);
のような関数を呼び出すが、私は私のtree
オブジェクトを参照するためにデバッガを使用する場合、何も変わっていない:tree
は前と同じです。キャッシュオブジェクト内でこのオブジェクトと参照オブジェクト/リンクオブジェクトをどのようにして達成できますか?
希望の結果を投稿できますか? '$ .each()'もjqueryです。 –
'Ocache'とは何ですか? – melpomene