我想转换点符号字符串,例如' 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
答案 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;