Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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_Node.js_Object - Fatal编程技术网

Javascript 在指定对象时,根据需要在对象中创建子键

Javascript 在指定对象时,根据需要在对象中创建子键,javascript,node.js,object,Javascript,Node.js,Object,我希望在为对象赋值时,如果需要,能够创建子键 问题是我得到了一个JSON,它可以具有以下值: { "myKey": "Foobar", "myOtherKey.mySubkey.myOtherSubkey": "Bazboo" } 如果我们想将值注入节点的全局对象,我们将有以下内容: global: { myKey: "Foobar", myOtherKey: { mySubkey: { myOtherSubkey: "Bazboo" } } }

我希望在为对象赋值时,如果需要,能够创建子键

问题是我得到了一个JSON,它可以具有以下值:

{
  "myKey": "Foobar",
  "myOtherKey.mySubkey.myOtherSubkey": "Bazboo"
}
如果我们想将值注入节点的
全局
对象,我们将有以下内容:

global: {
  myKey: "Foobar",
  myOtherKey: {
    mySubkey: {
      myOtherSubkey: "Bazboo"
    }
  }
}
我目前的情况是:

函数addGlobal(键,val){
if(~key.indexOf('.')){
让keys=key.split('.');
让上下文=全局;
while(键长){
key=keys.shift();
如果(!(输入上下文)){
上下文[键]={};
}
上下文=上下文[键]
}
上下文=val;
}
否则{
全局[键]=val;
}
}

我已将您的逻辑修改为使用递归,请检查它,如果您遇到任何问题,请告诉我

var-temp={
“myKey”:“Foobar”,
“myOtherKey.mySubkey.myOtherSubkey”:“Bazboo”
};
功能测试(){
addGlobal('myKey','Foobar',global);
addGlobal('myOtherKey.mySubkey.myOtherSubkey','Bazboo',global);
document.getElementById(“json”).innerHTML=json.stringify(全局,未定义,2);
}
变量全局={}
函数addGlobal(key,val,temppp){
var keys=key.split('.');
if(key.length==1){
temppp[key]=val;
}否则{
如果(!temppp[键[0]]){
temppp[keys[0]]={};
}
var crrentObject=temppp[keys[0]];
如果(!crrentObject)
crrentObject={};
键。拼接(0,1);
addGlobal(key.join('.')、val、crrentObject)
} 
}

单击下面的“测试并检查全局对象”

检查lodash的设置功能。它已经做了你想要的。“我现在拥有的是这个”和?它不起作用吗?如果没有,它怎么会不起作用,你有什么问题想弄明白为什么会这样?@earthling我不使用lodash,我也不想。@t.J.Crowder我自己试着调试它,但没有发现任何问题,所以我用谷歌搜索了这个问题,所以我问了这个问题