2017-04-07 16 views
-3

により、内側のキーに移動します。、Javascriptが私はこのようなJavaScriptオブジェクト持っ指数

var json = { 
    a : "xxxx", 
    b : { 
     p : 12, 
     a : "xxxx", 
     b : { 
      r : 1, 
      a : "xxxx", 
      b : null 
     } 
    } 
} 

をし、私は渡すと、キー、インデックスおよびオブジェクトをパラメータとして機能をしたいに、この最後のオブジェクトを追加インデックスで示される内部レベルのオブジェクト
私が知っているが、私は、よく例を説明していない:

function addObjectToJSON(key,index,object){ 
    var helpJSON = json; 
    for(var i = 0; i < index; i++){ 
     helpJSON = helpJSON[key]; 
    } 
    helpJSON = object;  

} 

上記の機能が明らかに動作しません。

私はこの結果ことを望む:

addObjectToJSON("b",2,{ a: 2, b: null}); 

だった:

var json = { 
    a : "xxxx", 
    b : { 
     p : 12, 
     a : "xxxx", 
     b : { 
      r : 1, 
      a : "xxxx", 
      b : { 
       a : 2, 
       b : null 
      } 
     } 
    } 
} 
+1

jsonではなくオブジェクトのように見えます。 –

+2

私はインデックスが正しい単語であるかどうかはわかりません。ネスティングレベルですか?インデックスへの接続が表示されません。引数 '2'は何をしますか?あなたは他の数字の例を挙げられますか? – Xufox

+0

私はあなたの質問が何であるか全く分からず、私はそれを理解しようとしばらく時間を費やしました... – Liam

答えて

0
var json = { 
a : "xxxx", 
b : { 
    p : 12, 
    a : "xxxx", 
    b : { 
     r : 1, 
     a : "xxxx", 
     b : null 
    } 
} 

}

// addObjectToJSON

function addObjectToJSON(key,index,object,indexes = ""){ 

     if(index < 0){ 
      return false; 
     } 


    var jsonHelp = json; 

    if(indexes != ""){ 
     var indexesSplit = indexes.split("."); 

     for(var i = 0; i < indexesSplit.length; i++){   
      jsonHelp = jsonHelp[indexesSplit[i]];    
     } 
    }else{ 
     if(index == 0){ 
      json[key] = object; 
      console.log(json); 
      return false; 
     } 
    } 


    for(keyHelp in jsonHelp){ 
     if(key == keyHelp){ 
      index--; 
      if(indexes == ""){ 
       indexes = key; 
      }else{ 
       indexes += "."+key; 
      } 
      if(index > -1){ 
       addObjectToJSON(key,index,object,indexes); 
       break; 
      } 
     }   
    }; 

    if(index <= -1){ 
     jsonHelp[key] = object;  
     var indixesHelp = "" 
     for(var i = 0; i < indexesSplit.length; i++){   
      indixesHelp += "."+indexesSplit[i];   
     } 
     eval("json"+indixesHelp+" = jsonHelp");   

     console.log(json); 
    } 


} 
関連する問題