动态创建嵌套Javascript对象

动态创建嵌套Javascript对象,javascript,json,string,Javascript,Json,String,我有一个(点)分隔的字符串,我想从中创建嵌套的JSON对象。字符串的长度不是固定的。比如说, var string = 'a.b.c.d'; 那么我的JSON对象应该如下所示: a: { b: { c:{ d: { //Some properties here. } } } } 我尝试了以下代码: var packageName = "a.b.c.d"

我有一个
(点)分隔的字符串,我想从中创建嵌套的JSON对象。字符串的长度不是固定的。比如说,

var string = 'a.b.c.d';
那么我的JSON对象应该如下所示:

a: {
    b: {
        c:{
           d: {
                  //Some properties here. 
              }
          } 
    }
}
我尝试了以下代码:

var packageName = "a.b.c.d"
var splitted = packageName.split('.');
var json = {};
for(var i=0;i<splitted.length-1;i++){
    json[splitted[i]] = splitted[i+1];
}

但这不是我想要的。我也在谷歌上搜索过,发现了类似的问题,但没有任何解决方案可以回答我的问题。例如

每次都需要创建一个新对象,并将其属性化为上次创建的对象。直到
splitted.length
,而不是
splitted.length-1
,因为您使用的
reduce

packageName=“a.b.c.d”;
initProps={hi:'there'};
obj=packageName.split('.').reduceRight((o,x)=>({[x]:o}),initProps);

console.log(JSON.stringify(obj))
您可以使用最后分割的部分作为某些负载的属性

我建议保留对象引用,并在必要时使用临时变量来访问和创建新属性

请避免使用for not stringized objects

var packageName=“a.b.c.d”,
splitted=packageName.split('.'),
结果={},
温度=结果,
我
对于(i=0;i控制台日志(结果)正确!我不仅仅想到了这个简单的逻辑。谢谢+1、接受!您要问的是如何创建嵌套的JS对象,而不是JSON。创建JSON就是创建您的JS对象,然后将其序列化为JSON文本格式。谢谢您的选择。但我很难理解这一点+1.
reduce[Right]
的优秀用例。这里发布了太多令人讨厌且难以理解的函数式编程示例,尤其是使用
reduce
,很高兴看到干净、清晰、惯用的示例。
{
    a: 'b', 
    b: 'c',
    c: 'd'
}