2017-05-12 1 views
-2

深さのレイヤーでjsonオブジェクトの変数を割り当てたいと思います。例については :深さでJSONプロパティを動的に割り当てる

veryDeepTree[branch][branch][branch][branch] = value 

は、関数を実行することによって達成されるであろう:あなたがこれを行うことができます

assignByDepth(4, value, branch) 
+2

はどのように機能は、各中間オブジェクトにどのようなプロパティを使用することを知っているだろうか? – Pointy

答えて

0

一つの方法は、再帰関数を使用することです。関数の各反復は、値を設定するために必要なレベルに達するまで1レベル深くなります。これは、関数を呼び出す前に、オブジェクトが正しい深さで存在することを前提とした基本バージョンです。今のように、誤って使用すると複数のエラーが発生することがあります。エラーチェックを追加するために修正する必要があります。

var veryDeepTree = { 
 
    branch : { 
 
     branch : { 
 
      branch : { 
 
      } 
 
     } 
 
    } 
 
}; 
 

 
function assignByDepth(subTree, currentTreeDepth, objProperty, value){ 
 
    if(currentTreeDepth == 1){ 
 
     subTree[objProperty] = value; 
 
    }else{ 
 
     assignByDepth(subTree[objProperty], --currentTreeDepth, objProperty, value); 
 
    } 
 
} 
 

 
assignByDepth(veryDeepTree, 3, "branch", {branch:10}); 
 
console.log(veryDeepTree); 
 

 
assignByDepth(veryDeepTree, 4, "branch", 5555); 
 
console.log(veryDeepTree);

関連する問題