我有一个.
(点)分隔的字符串,我想从它创建嵌套的JSON对象。字符串的长度不是固定的。例如,
var string = 'a.b.c.d';
那么我的JSON对象应该如下所示:
a: {
b: {
c:{
d: {
//Some properties here.
}
}
}
}
我试过以下代码:
var packageName = "a.b.c.d"
var splitted = packageName.split('.');
var json = {};
for(var i=0;i<splitted.length-1;i++){
json[splitted[i]] = splitted[i+1];
}
但这又回来了
{
a: 'b',
b: 'c',
c: 'd'
}
但这不是我想要的。我也在谷歌上搜索过,也发现了类似的问题,但是没有解决我的问题。比如,这。
发布于 2018-03-09 16:55:31
一个很好的reduce
用例
packageName = "a.b.c.d";
initProps = {hi: 'there'};
obj = packageName.split('.').reduceRight((o, x) => ({[x]: o}), initProps);
console.log(JSON.stringify(obj))
如果您发现使用循环更容易,则可以简洁地将循环编写为
result = {};
ptr = result;
for (let prop of packageName.split('.'))
ptr = ptr[prop] = {};
https://stackoverflow.com/questions/49198398
复制相似问题