首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态创建嵌套Javascript对象

动态创建嵌套Javascript对象
EN

Stack Overflow用户
提问于 2018-03-09 16:45:46
回答 3查看 3.8K关注 0票数 2

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

代码语言:javascript
运行
复制
var string = 'a.b.c.d';

那么我的JSON对象应该如下所示:

代码语言:javascript
运行
复制
a: {
    b: {
        c:{
           d: {
                  //Some properties here. 
              }
          } 
    }
}

我试过以下代码:

代码语言:javascript
运行
复制
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];
}

但这又回来了

代码语言:javascript
运行
复制
{
    a: 'b', 
    b: 'c',
    c: 'd'
}

但这不是我想要的。我也在谷歌上搜索过,也发现了类似的问题,但是没有解决我的问题。比如

EN

Stack Overflow用户

发布于 2018-03-09 16:55:31

一个很好的reduce用例

代码语言:javascript
运行
复制
packageName = "a.b.c.d";
initProps = {hi: 'there'};

obj = packageName.split('.').reduceRight((o, x) => ({[x]: o}), initProps);

console.log(JSON.stringify(obj))

如果您发现使用循环更容易,则可以简洁地将循环编写为

代码语言:javascript
运行
复制
result = {};
ptr = result;

for (let prop of packageName.split('.'))
    ptr = ptr[prop] = {};
票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49198398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档