Javascript 在指定对象时,根据需要在对象中创建子键
我希望在为对象赋值时,如果需要,能够创建子键 问题是我得到了一个JSON,它可以具有以下值:Javascript 在指定对象时,根据需要在对象中创建子键,javascript,node.js,object,Javascript,Node.js,Object,我希望在为对象赋值时,如果需要,能够创建子键 问题是我得到了一个JSON,它可以具有以下值: { "myKey": "Foobar", "myOtherKey.mySubkey.myOtherSubkey": "Bazboo" } 如果我们想将值注入节点的全局对象,我们将有以下内容: global: { myKey: "Foobar", myOtherKey: { mySubkey: { myOtherSubkey: "Bazboo" } } }
{
"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我自己试着调试它,但没有发现任何问题,所以我用谷歌搜索了这个问题,所以我问了这个问题