javascript - 如何将字符串点表示法转换为嵌套对象?

标签 javascript

我想将像“a.b.c.d”这样的点符号字符串转换为对象。如果该对象不存在,我想创建一个空对象。

var str = 'a.b.c.d'
var obj = {}

// so ...

function dotToObj(obj, str) {
    // something 
    obj[?] = obj[?] || {}            
     }

// If object doesnt exist so create a empty object.

var rsp = dotToObj(obj, str);


console.log(rsp)

// Excpect:
Object {a: Object}
    a: Object
        b: Object
            c: Object
                d: Object
                __proto__: Object
            __proto__: Object
        __proto__: Object
    __proto__: Object

最佳答案

您可以拆分字符串并将各部分用作 Array.prototype.reduce() 的引用。 ,其中 obj 用作起始对象,迭代时返回新引用。

var str = 'a.b.c.d',
    obj = {};

str.split('.').reduce(function (r, a) {
    r[a] = r[a] || {};
    return r[a];
}, obj);

document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');

关于javascript - 如何将字符串点表示法转换为嵌套对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34899477/

相关文章:

php - 使用 JavaScript 动态添加字段会使字段消失

javascript - Chrome 带来整数值 $('.abc' ).css ("top");

javascript - 如何将 iFrame 的部分 URL 更改为随机字符串?

javascript - 我该如何使用 Ember.Select ?如何设置默认选择的项目?

javascript - Firefox 无重启插件 : Errors Logged on Enable/Disable

javascript - 使用 HTML/CSS 和 Javascript 的 Domino's Tracker

javascript - Air中两个NativeWindows之间如何通信

javascript - 我需要有关表格顶行粘性的帮助

javascript - MDC 菜单 - 当焦点在输入上时保持菜单打开

javascript - Chrome 扩展 - 通过刷新页面保存整个网站的设置