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

Javascript按数组创建对象

Javascript按数组创建对象,javascript,arrays,object,recursion,Javascript,Arrays,Object,Recursion,我尝试使用最后一个关键点的值创建一个对象。我只是有一个带有键和值的数组,但不知道如何在不使用javascript中的引用的情况下创建对象 据我所知,在javascript中没有创建变量引用的方法 这就是我所拥有的: var value = 'test'; var keys = ['this', 'is', 'a', 'test']; 这就是我想要的: myObject: { this : { is: { a : { test : 'test'

我尝试使用最后一个关键点的值创建一个对象。我只是有一个带有键和值的数组,但不知道如何在不使用javascript中的引用的情况下创建对象

据我所知,在javascript中没有创建变量引用的方法

这就是我所拥有的:

var value = 'test';
var keys = ['this', 'is', 'a', 'test'];
这就是我想要的:

myObject: {
   this : {
     is: {
       a : {
         test : 'test'
       }
     }
   }
}
你知道如何用JavaScript实现这一点吗?

有了这个:

var curObj = myObject = {};
for(var i=0; i<keys.length-1; i++)
   curObj = curObj[keys[i]] = {};    
curObj[value] = keys[i];
与其他答案相反,这会输出您所要求的内容

为此干杯

var curObj = myObject = {};
for(var i=0; i<keys.length-1; i++)
   curObj = curObj[keys[i]] = {};    
curObj[value] = keys[i];
与其他答案相反,这会输出您所要求的内容

干杯

这个怎么样

const value='test'
常量键=['this','is','a','test']
const myObject=keys.reduceRight((p,c)=>({[c]:p}),value)
console.info(myObject)
这个怎么样

const value='test'
常量键=['this','is','a','test']
const myObject=keys.reduceRight((p,c)=>({[c]:p}),value)
console.info(myObject)
varo={},c=o;
var值=‘测试’;
var keys='这是一个测试'。拆分('');
对于(vari=0;i
varo={},c=o;
var值=‘测试’;
var keys='这是一个测试'。拆分('');

对于(var i=0;i,如果您希望输出如下

{
   this : {
     is: {
       a : 'test'
     }
   }
}
执行以下操作

var keys = ['this', 'is', 'a', 'test'];
var output = keys.reduceRight((p,c)=>({[c]:p}))
console.log(output)
输出结果如下

{ this: { is: { a: 'test' } } }

如果您希望输出像

{
   this : {
     is: {
       a : 'test'
     }
   }
}
执行以下操作

var keys = ['this', 'is', 'a', 'test'];
var output = keys.reduceRight((p,c)=>({[c]:p}))
console.log(output)
输出结果如下

{ this: { is: { a: 'test' } } }


?我不认为JSON能帮我解决这个问题。我有一个带键的数组。每个键都必须是对象中的一个新对象。最后一个键的值是变量“value”。你确定内部值不是
test:'test'
?@Phil是的-当然。我的错。我会编辑这个问题。但多亏了你精彩的回答(:它仍然有效。我编辑了一个所罗门数据,所以以前没有正确的答案是不正确的:)?我不认为JSON可以帮我解决这个问题。我有一个带键的数组。每个键都必须是对象中的一个新对象。最后一个键的值是变量“value”。你确定内部值不应该是
test:'test'
?@Phil是-当然。我的错。我会编辑这个问题。但多亏了你的精彩回答(:它仍然有效。我编辑了所罗门数据,所以以前没有正确的答案是不正确的:)它在最后一个节点中有一个错误,但这段代码太漂亮了,我无法对它进行否决,它最终创建了
test:“test”
而不是
test:“test”
。但不管怎样,尽管这不正确,但我还是投了我的票,很好code@EdgarVillegasAlvarado啊。OP的描述让它听起来像
应该是最里面的值,而不是键。我要求澄清哇。太棒了。以前从未在javascript中听说过这个方法。感谢这个干净的代码。我将尝试它,并将编辑:我试过了,对我的问题来说效果很好!非常感谢dude:)它在最后一个节点中有一个错误,但是这段代码太漂亮了,我不能对它进行否决,它最终创建了
test:
而不是
test:“test”
。但不管怎样,尽管这不正确,但我还是投了我的票,很好code@EdgarVillegasAlvarado啊。OP的描述让它听起来像
应该是最里面的值,而不是键。我要求澄清哇。太棒了。以前从未在javascript中听说过这个方法。感谢这个干净的代码。我将尝试它,并将编辑:我试过了,这对我的问题很好!非常感谢伙计:)
keys
已经是一个数组了?为什么要将其转换为字符串然后再返回数组?@Phil BC我懒得用鼠标复制/粘贴,我想向OP展示另一种懒惰的程序员方法,用更少的键入创建字符串数组。
keys
已经是一个数组了?为什么要将其转换为字符串然后返回数组?@Phil BC我懒得用鼠标复制/粘贴,我想向OP展示另一种懒散的程序员方法,用更少的打字来创建字符串数组。你是从我的答案中得到了这样简洁的答案,还是你自己得到的?(无论哪种方式都可以)我每分钟都在重构(你可以看到版本),甚至没有意识到你的答案。我的答案与你的不同,虽然是的,但你的答案是OP要求的(我怀疑这是错误的:)无论如何,请注意循环后
i
的值将是
键的值。length-1
,因此,如果您愿意,可以使用该值使最后一行更干净。现在不要看,但OP更新了他们的问题;)。我仍然对如何解决更难的原始问题投了赞成票。你是从我的答案中得到如此简洁的答案,还是靠你自己?(不管怎样都可以)我每分钟都在重构(你可以看到版本),甚至没有意识到你回答了。我的给出了一个不同的结果,虽然是的,你的给出了OP要求的答案(我怀疑这是错误的:)无论如何,请注意循环后
I
的值将是
键的值。length-1
,所以如果你愿意,你可以用它来让最后一行更干净。现在不要看,OP更新了他们的问题;)。我仍然对如何解决更难的原始查询的努力投了赞成票