我想将像“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/