创建分层动态JS对象

时间:2014-09-27 15:50:24

标签: javascript

我的问题是我想构建一个JS对象消息分层动态,而这个没有数组。我在stackoverflow,谷歌和许多其他网站上搜索了很多,但遗憾的是还没有找到解决方案,我对这个领域相当新。 阵列有很多例子,但他们没有回答我的问题。 这是我的结构。

{
"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不存在且N02可用,则需要在层次结构中添加N02。 我需要一些帮助才能在JavaScript中执行此操作。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题是正确的,我不是一般的,但我会创建一个基本对象,如

&#13 ;

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>
&#13;
&#13;
&#13;

可以轻松修改所有属性,只需选择message.ID,然后添加message.ID = 12之类的值。

我还在此对象中添加了一个函数&#39; addParam&#39;。这会将附加对象添加到PARAM属性,并将更新数字值。