2013-09-26 85 views
-6

所以,给定对象的这种结构:转换一个级别对象以嵌套对象的JavaScript

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

} 

需要转换到这个样子:

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

只是简单的例子。我希望看到最优化和美观的解决方案。显然它应该是第一个对象作为输入和第二个输出的函数。 谢谢您提前预约。

+2

[您还没有表现出你已经尝试了什么(http://whathaveyoutried.com),这不是我的工作,为你做你的工作。 – zzzzBov

+0

zzzzBov,看。如果你不感兴趣,那么不要忽视它。为什么要抱怨,我不明白?对于某些人来说,这可能很有趣。 – Pol

+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

+0

@Pol看到更新 –

+0

我在关注。谢谢。 – Pol