Javascript 如何从路径(键数组)创建嵌套对象结构?
我试图制作一个字符串数组,然后构建嵌套对象链,基本上存储输入数组中的字符串后面的字符串。最初,这些链的深度为2,但我需要能够生成更高的深度链 基本上,我需要这样一个数组:Javascript 如何从路径(键数组)创建嵌套对象结构?,javascript,arrays,string,object,javascript-objects,Javascript,Arrays,String,Object,Javascript Objects,我试图制作一个字符串数组,然后构建嵌套对象链,基本上存储输入数组中的字符串后面的字符串。最初,这些链的深度为2,但我需要能够生成更高的深度链 基本上,我需要这样一个数组: ["test1", "test2", "test3", "test4"] 并将其转换为: { "test1": { "test2": { "test3": { "test4": {}
["test1", "test2", "test3", "test4"]
并将其转换为:
{
"test1":
{
"test2":
{
"test3":
{
"test4": {}
}
}
}
}
这看起来像是一份工作:
函数objectFromPath(path){
var result={}
reduce(函数(o,k){
返回(o[k]={})
},结果)
返回结果
}
var path=[“test1”、“test2”、“test3”、“test4”]
console.log(objectFromPath(path))
.as控制台包装{min height:100%;}
这看起来像是一项针对以下人员的作业:
函数objectFromPath(path){
var result={}
reduce(函数(o,k){
返回(o[k]={})
},结果)
返回结果
}
var path=[“test1”、“test2”、“test3”、“test4”]
console.log(objectFromPath(path))
.as console wrapper{min height:100%;}
我想解决一个类似的问题,但我想在结果对象内的路径末尾设置一个值,并且我想提供一个初始对象。我从gyre的函数开始,添加了一些额外的魔法来满足我的用例
//从表示键路径的数组中创建嵌套对象
//
//接受2个可选参数:
//-要在路径末尾设置的值
//-初始对象
//
//例如:let house=objectFromPath(['kitchen','Friend','empty',{civic:123})
//=>房子={市政:123,厨房:{冰箱:空的}
const objectFromPath=(路径,值={},obj={})=>
{
path.reduce((结果、键、i、源)=>
{
if(i==(source.length-1))
{
返回(结果[键]=值)
}
其他的
{
返回(结果[键]={})
}
},
obj
)
返回obj;
}
//演示:房子={思域:123,厨房:{冰箱:'空'}
console.log(
objectFromPath(
[“厨房”、“冰箱”],
“空的”,
{公民:123}
)
)
我想解决一个类似的问题,但我想在结果对象的路径末端设置一个值,并且我想提供一个初始对象。我从gyre的函数开始,添加了一些额外的魔法来满足我的用例
//从表示键路径的数组中创建嵌套对象
//
//接受2个可选参数:
//-要在路径末尾设置的值
//-初始对象
//
//例如:let house=objectFromPath(['kitchen','Friend','empty',{civic:123})
//=>房子={市政:123,厨房:{冰箱:空的}
const objectFromPath=(路径,值={},obj={})=>
{
path.reduce((结果、键、i、源)=>
{
if(i==(source.length-1))
{
返回(结果[键]=值)
}
其他的
{
返回(结果[键]={})
}
},
obj
)
返回obj;
}
//演示:房子={思域:123,厨房:{冰箱:'空'}
console.log(
objectFromPath(
[“厨房”、“冰箱”],
“空的”,
{公民:123}
)
)
别以为他会比这更好谢谢你的回答,尤其是编辑我问题的标题。现在我知道我要做的是什么了!别以为他会比这更好谢谢你的回答,尤其是编辑我问题的标题。现在我知道我要做的是什么了!