繁体   English   中英

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

[英]How transform string dot notation to nested object?

我想将点符号字符串(如“ abcd”)转换为对象。 如果对象不存在,我想创建一个空对象。

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 = 'abcd', obj = {}; str.split('.').reduce(function (r, a) { r[a] = r[a] || {}; return r[a]; }, obj); document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM