Javascript按数组创建对象
我尝试使用最后一个关键点的值创建一个对象。我只是有一个带有键和值的数组,但不知道如何在不使用javascript中的引用的情况下创建对象 据我所知,在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'
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];
与其他答案相反,这会输出您所要求的内容
干杯这个怎么样
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='这是一个测试'。拆分('');
对于(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' } } }
?我不认为JSON能帮我解决这个问题。我有一个带键的数组。每个键都必须是对象中的一个新对象。最后一个键的值是变量“value”。你确定内部值不是test:'test'
?@Phil是的-当然。我的错。我会编辑这个问题。但多亏了你精彩的回答(:它仍然可以按照它必须的方式工作。我编辑了一个所罗门数据,所以以前没有正确的答案是不正确的:)它在最后一个节点中有一个错误,但是这段代码太漂亮了,我不能对它进行下推,它最终创建了test:
而不是test:“test”
。但不管怎样,尽管这不正确,但我还是投了我的票,很好code@EdgarVillegasAlvarado啊。OP的描述让它听起来像值
应该是最里面的值,而不是键。我要求澄清哇。太棒了。以前从未在javascript中听说过这个方法。感谢这个干净的代码。我将尝试它,并将编辑:我试过了,这对我的问题很好!非常感谢伙计:)keys
已经是一个数组了?为什么要把它变成一个字符串然后再回到一个数组呢?@Phil BC我懒得用鼠标复制/粘贴,我想向OP展示另一种懒散的程序员方法,用更少的输入创建一个字符串数组。你是从我的答案中得到的简洁性,还是你自己得到的?(好吧)我每分钟都在重构(你可以看到版本),甚至没有意识到你回答了。我的结果不同,虽然是的,但你的给出了OP要求的答案(我怀疑这是错误的:)无论如何,请注意循环后i
的值将是键的值。length-1
,因此,如果您愿意,可以使用该值使最后一行更干净。现在不要看,但OP更新了他们的问题;)。我仍然对如何解决更难的原始查询的努力投了赞成票
var keys = ['this', 'is', 'a', 'test'];
var output = keys.reduceRight((p,c)=>({[c]:p}))
console.log(output)
{ this: { is: { a: 'test' } } }