在javascript中将一个级别对象转换为嵌套对象

时间:2013-09-26 02:37:54

标签: javascript

所以,给定这个对象结构:

{
   property1: 'value1',
   property2.property3: 'value2',
   property2.property7: 'value4',
   property4.property5.property6: 'value3',

}

需要转换为此外观:

{
   property1: 'value1',
   property2: { 
                property3: 'value2',
                property7: 'value4'
              },
   property4: { 
                property5: { 
                             property6: 'value3'
                           }
              }
}

只是简单的例子。我想看看最优化和美观的解决方案。显然它应该是将第一个对象作为输入并输出第二个的函数。 感谢您提前的时间。

1 个答案:

答案 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