-6

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

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

}

需要转换成这样的样子:

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

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

4

1 回答 1

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;
}

演示:小提琴

于 2013-09-26T02:53:23.390 回答