2011-08-26 42 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的回覆。