【问题标题】:dynamically create a JavaScript object client side动态创建 JavaScript 对象客户端
【发布时间】:2014-06-16 06:36:53
【问题描述】:

我需要动态创建下面的JavaScript对象,但是太复杂了。

var data = {
    "nodes":[
        {"id":"n1", "loaded":true, "style":{"label":"Node1"}},
        {"id":"n2", "loaded":true, "style":{"label":"Node2"}},
        {"id":"n3", "loaded":true, "style":{"label":"Node3"}}
    ],
     "links":[
        {"id":"l1","from":"n1", "to":"n2", "style":{"fillColor":"red", "toDecoration":"arrow"}},
        {"id":"l2","from":"n2", "to":"n3", "style":{"fillColor":"green", "toDecoration":"arrow"}},
        {"id":"l3","from":"n3", "to":"n1", "style":{"fillColor":"blue", "toDecoration":"arrow"}}
    ]
};

这是一个动态的东西,因为我需要动态更改 id 的值,有时我需要添加更多节点和更多链接,如下所示

var data = {
    "nodes":[
        {"id":"n1", "loaded":true, "style":{"label":"Node1"}},
        {"id":"n2", "loaded":true, "style":{"label":"Node2"}},
        {"id":"n3", "loaded":true, "style":{"label":"Node3"}},
        {"id":"n3", "loaded":true, "style":{"label":"Node3"}},
    ],
     "links":[
        {"id":"l1","from":"n1", "to":"n2", "style":{"fillColor":"red", "toDecoration":"arrow"}},
        {"id":"l2","from":"n2", "to":"n3", "style":{"fillColor":"green", "toDecoration":"arrow"}},
        {"id":"l3","from":"n3", "to":"n1", "style":{"fillColor":"blue", "toDecoration":"arrow"}}
        {"id":"l3","from":"n3", "to":"n1", "style":{"fillColor":"blue", "toDecoration":"arrow"}}
        {"id":"l3","from":"n3", "to":"n1", "style":{"fillColor":"blue", "toDecoration":"arrow"}}
    ]
};

我想用 JavaScript 创建它

var data = {};
and data.nodes = ?;
and data.links = ?;

不像添加特定的

我的问题是如何创建

{"id":"n1", "loaded":true, "style":{"label":"Node1"}},

使用 JavaScript,我想更改 idloaded 的值并将其也放入该节点信息中,每次我有不同数量的节点和链接。

【问题讨论】:

    标签: javascript json object dynamic


    【解决方案1】:

    你可以使用一个函数:

    function makeNode(n, loaded) {
        return {
            id: 'n' + n, 
            loaded: loaded || false, 
            style: { label: 'Node' + n }
        };
    }
    
    data.nodes.push(makeNode(1));
    data.nodes.push(makeNode(2, false));
    data.nodes.push(makeNode(3, true));
    
    // data.nodes
    [
        { id: 'n1', loaded: false, style: { label: 'Node1' } },
        { id: 'n2', loaded: false, style: { label: 'Node2' } },
        { id: 'n3', loaded: true,  style: { label: 'Node3' } }
    ]
    

    【讨论】:

      【解决方案2】:

      如果要添加到数组中:

      var x = {"id":"n3", "loaded":true, "style":{"label":"Node3"}}; //the thing you want to add
      data.nodes.push(x);
      

      【讨论】:

      • 感谢您的回复。不要添加信息。我需要更改id并加载动态...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多