Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_String_Object_Javascript Objects - Fatal编程技术网

Javascript 如何从路径(键数组)创建嵌套对象结构?

Javascript 如何从路径(键数组)创建嵌套对象结构?,javascript,arrays,string,object,javascript-objects,Javascript,Arrays,String,Object,Javascript Objects,我试图制作一个字符串数组,然后构建嵌套对象链,基本上存储输入数组中的字符串后面的字符串。最初,这些链的深度为2,但我需要能够生成更高的深度链 基本上,我需要这样一个数组: ["test1", "test2", "test3", "test4"] 并将其转换为: { "test1": { "test2": { "test3": { "test4": {}

我试图制作一个字符串数组,然后构建嵌套对象链,基本上存储输入数组中的字符串后面的字符串。最初,这些链的深度为2,但我需要能够生成更高的深度链

基本上,我需要这样一个数组:

["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}
)

)
别以为他会比这更好谢谢你的回答,尤其是编辑我问题的标题。现在我知道我要做的是什么了!别以为他会比这更好谢谢你的回答,尤其是编辑我问题的标题。现在我知道我要做的是什么了!