2014-09-27 77 views
1

我的问题是,我想建立一个JS对象消息分层动态,这没有数组。我在stackoverflow,google和许多其他网站上搜索了很多,但不幸的是还没有找到解决方案,而且我对这个领域还比较陌生。 数组有很多例子,但他们没有回答我的问题。 这是我的结构。创建分层动态JS对象

{ 
"ID" : 1, 
"SRC" : "SYS", 
"LOG" : { 
    "PARAM" : { 
     "NUM" : 3, 
     "N01" : { 
      " TO " : 1, 
      " OM " : 1, 
      " NO " : 1, 
      " IO " : 1, 
     }, 
     "N02" : { 
      " TO " : 2, 
      " OM " : 2, 
      " NO " : 2, 
      " IO " : 2, 
     }, 
     "N03" : { 
      " TO " : 3, 
      " OM " : 3, 
      " NO " : 3, 
      " IO " : 3, 
     } 
    } 
}} 

如果下次只有N02存在,结构应该是这样的。等等......

{ 
"ID" : 1, 
"SRC" : "SYS", 
"LOG" : { 
    "PARAM" : { 
     "NUM" : 1, 
     "N02" : { 
      " TO " : 2, 
      " OM " : 2, 
      " NO " : 2, 
      " IO " : 2, 
     }}}} 

从NUM存在,例如,N01应该被添加到结构中。如果N01不存在且N02可用,则需要在分层结构中添加N02。 我需要一些帮助来做到这一点在JavaScript中。

+0

对象是否必须有密钥?我的意思是,不用'N01'到'N03',你可以使用一个数组:'PARAM:[{},{},{}]'。 – 2014-09-27 15:54:09

+0

与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或在[so]上签名。请参阅[应该'嗨','谢谢,'标语和致敬从帖子中删除?](http://meta.stackoverflow.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-删除 - 从 - 个)。 – rene 2014-09-27 15:55:51

+0

是的,这是我的结构,主要问题是,如何在没有数组的javascript中实现这个结构?这甚至有可能吗?或者我应该在数组中做? – goldstone 2014-09-27 16:05:09

回答

0

我不是舒尔如果我明白你的问题正确的,但我想创建一个基本的物体,像

message = { 
 
      addParam: function (item) { 
 
       var paramLength = 0; 
 
       for (var k in this.LOG.PARAM) { 
 
        if (this.LOG.PARAM.hasOwnProperty(k)) { 
 
         paramLength++; 
 
        } 
 
       } 
 
       this.LOG.PARAM["NUM"] = paramLength; 
 
       this.LOG.PARAM["N"+paramLength] = item; 
 
      }, 
 
      ID: 1, 
 
      SRC: "SYS", 
 
      LOG: { 
 
       PARAM: { 
 
        NUM: 0, 
 
       } 
 
      } 
 
     } 
 
     message.addParam({ 
 
      " TO ": 1, 
 
      " OM ": 1, 
 
      " NO ": 1, 
 
      " IO ": 1, 
 
     }); 
 
     document.getElementById("output").innerHTML = JSON.stringify(message, null, 4);
<div ><pre id="output"></pre></div>

所有属性都可以修改easely选择它就像一个message.ID添加像message.ID = 12的值。

我还为此对象添加了一个函数addParam。这会将附加对象添加到PARAM属性中,以更新数字值。

+0

如果我的回答是有用的,请将它投票:) @goldstone – 2014-09-28 05:15:07

+0

很好的答案!这就是我需要的;) – goldstone 2014-09-28 10:23:37

+0

我很喜欢这样做,但我不能这样做,因为我没有15的声望......或者当你知道如何时,请让我知道。 :) – goldstone 2014-09-28 10:23:54