所以,给定这个对象结构:
{
property1: 'value1',
property2.property3: 'value2',
property2.property7: 'value4',
property4.property5.property6: 'value3',
}
需要转换为此外观:
{
property1: 'value1',
property2: {
property3: 'value2',
property7: 'value4'
},
property4: {
property5: {
property6: 'value3'
}
}
}
只是简单的例子。我想看看最优化和美观的解决方案。显然它应该是将第一个对象作为输入并输出第二个的函数。 感谢您提前的时间。
答案 0 :(得分:0)
粗略的实施可以
function convert(obj) {
var res = {}, i, j, splits, ref, key;
for (i in obj) {
if (obj.hasOwnProperty(i)) {
splits = i.split('.');
ref = res;
for (j = 0; j < splits.length; j++) {
key = splits[j];
if (j == splits.length - 1) {
ref[key] = obj[i];
} else {
ref = ref[key] = ref[key] || {};
}
}
};
}
return res;
}
演示:Fiddle