Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript通过索引转到内部键_Javascript - Fatal编程技术网

Javascript通过索引转到内部键

Javascript通过索引转到内部键,javascript,Javascript,我有一个Javascript对象,如下所示: var json = { a : "xxxx", b : { p : 12, a : "xxxx", b : { r : 1, a : "xxxx", b : null } } } 我想要一个函数,作为参数传入一个键、一个索引和一个对象,将最后一个对象添加到索引指示的内部级别的对象中。 我

我有一个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

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


}

这看起来像一个对象,而不是json。我不确定index这个词是否正确。你是说筑巢水平吗?我看不到与索引的联系。论点2的作用是什么?你能提供其他数字的例子吗?我完全不知道你的问题是什么,我花了一些时间试图弄明白。。。
var json = {
    a : "xxxx",
    b : {
        p : 12,
        a : "xxxx",
        b : {
            r : 1,
            a : "xxxx",
            b : {
                 a : 2,
                 b : null   
            }
        }
    }
}
var json = {
a : "xxxx",
b : {
    p : 12,
    a : "xxxx",
    b : {
        r : 1,
        a : "xxxx",
        b : null
    }
}
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);
   }


}