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

时间:2016-01-20 12:00:29

标签: 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

1 个答案:

答案 0 :(得分:3)

您可以拆分字符串并使用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>');
&#13;
&#13;
&#13;