2011-08-26 44 views
1

我想使用json对象创建一个邻接列表。我想以下面的格式实现json对象的邻接列表。使用json对象的邻接列表

var JSONobj= {node1:[{x1,y1},{x3,y3},{x4,y4}], node2:[{x2,y2},{x3,y3}], node3:[]} 

我的疑问是,我是否可以添加值到坐标列表中动态地如JSONobj.node3[0]={x4,y4}? 或者是否有更好的方法从对象声明外部向JSONobj添加值?

+0

另外,刚刚发现这个其他职位

回答

1

您可以将元素推入JSON对象,因为它只是一个漂亮的数组。

JSONobj.push({"newElement":"value"}); 
+0

但这不工作me.'push'正在为数组工作,但在这里它不工作..! – Unni

+0

它如何将元素添加到JSON数组和标准数组中,您可能只需要这样做 'JSONobj.node3.push({“newElement”:“value”});' As far因为我知道这非常适合将新对象添加到JSON数组中。你总是可以尝试 'JSONobj.node3 [0] [0] = 'x4'' 但是,这将使你喜欢这个 'JSONobj东西 - >节点3 - > 0 - > 0 =' x4'' –

+0

对于已故的评论感到抱歉!它正如你所说的那样工作。事实上,我尝试了另一种方式来实现邻接列表,它的工作原理与我的意思完全相同。无论如何,我也从你那里得到了一些有价值的观点。 – Unni

0

JSON in Javascript是一个普通的(结构化的)Javascript对象。所以,首先它必须遵守对象语法。 node1,x1等,必须是定义变量或显式常量。 JS中没有定义{x1, x2}。它必须是attribute: value,例如{x1: 1, "x2": "a2"}。只要你有一个语法上有效的对象,你可以随意操纵它。例如。

var node1 = "node1"; 
var x1 = "x1"; 
var y1 = "y1"; 
var x3 = "x3"; 
var y3 = "y3"; 
var JSONobj= {node1: [{x1:1,y1:1}, {x3:2,y3:3}], 
    "node2": [{"x2":1,"y2":2}], "node3": []}; 
JSONobj.node3[0] = {"x4":4,"y4":4}; 
JSONobj.node4 = []; 
JSONobj.node4.push({"x5":5, "x6":6}); 

如果你想使用这个对象外部JS(例如,它发送到服务器),则需要将其转换为一个JSON字符串:

var JSONtext = JSON.stringify(JSONobj); 

如果你要转换的JSON字符串到JS中的JSON对象,您可以使用:

var JSONobj = JSON.parse(JSONtext); 
+0

谢谢吉里。实际上,当我在我的问题中提到时,实施邻接列表时会遇到一些问题。我正在给出现在正在使用的新解决方案。 – Unni

0

我在使用JSON实现邻接列表时遇到了一些问题。首先,我不能在id:value对中使用'整数值'作为id。所以我重新思考我的问题,并以另一种方式接近,并实施了下面的邻接列表(作为列表的列表)。

电流溶液

通过其笛卡儿坐标的曲线图中的每个节点的表示是一个真正的低级别表示。在算法级别,我们需要将一个唯一的数字与每个顶点相关联;例如,可以映射:

  • 顶点0 --->(100,200)
  • 顶点1 --->(45,78)
  • 顶点2 --->(198, 213)

我为所有顶点的列表: 如:nodes = [[100,200],[45,78],[198,213]]

其中nodes[1]给出了顶点坐标1

而邻接列表是列表的形式。

adj_list = [[1,2,3], [0, 4, 5] ] 

adj_list[1]给出了与node1相邻的节点列表。等..

这意味着:邻近于(直接连接到)顶点0,则有顶点1,2,3

毗邻顶点1,你有顶点0,4,5 .. 。

我发现这个解决方案更适合我的问题。感谢Dave和Jiri的回复。