2011-08-26 2 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"}); ' 멀리까지 아시겠지만 JSON 배열에 새 객체를 추가하는 것이 좋습니다. 당신은 항상 는'JSONobj.node3 [0] [0] = ' 을 x4''하지만이 'JSONobj처럼 당신에게 뭔가를 줄 것이다 -> 노드 3 -> 0 -> 0 ='시도 할 수 –

+0

을 x4'' 늦은 코멘트에 대해 유감스럽게 생각합니다. 당신이 언급 한대로 일하고 있습니다. 사실 나는 인접성 목록을 구현하는 또 다른 방법을 시도했고 그것은 내가 의미했던 것처럼 정확하게 작동하고있다. 어쨌든 나는 너에게서 귀중한 점들을 얻었 어. – Unni

0

JSON in Javascript은 일반적인 (구조화 된) 자바 스크립트 개체입니다. 따라서 먼저 객체 구문을 따라야합니다. node1, x1 등은 변수 또는 명시 적 상수로 정의해야합니다. {x1, x2}은 JS에 정의되어 있지 않습니다. attribute: value이어야합니다. {x1: 1, "x2": "a2"}. 구문 적으로 유효한 객체를 얻 자마자 원하는대로 조작 할 수 있습니다. 예 :

var JSONtext = JSON.stringify(JSONobj); 

당신이 JSON 문자열을 변환 할 경우 : 당신이 (예를 들어, 서버로 전송) JS 외부에이 개체를 사용하려면

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}); 

, 당신은 JSON 문자열로 변환 할 필요가

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

고마워요. 지리. 실제로 내 문제에서 언급 한 것처럼 인접 목록을 구현할 때 약간의 문제가 있습니다. 지금 사용중인 새로운 솔루션을 제공하고 있습니다. – Unni

0

인접 목록 구현을 위해 JSON을 사용할 때 몇 가지 문제가 발생했습니다. 우선 id : value 쌍에서 id로 '정수 값'을 사용할 수 없습니다. 그래서 나는 내 문제에 대해 다시 생각해보고 다른 방법으로 접근했고 다음과 같이 인접 목록을 구현했습니다 (목록 목록).

현재 솔루션

의 데카르트 좌표에 의한 그래프의 각 노드의 표현은 실제로 저레벨 표현이다. 알고리즘 레벨에서 각 꼭지점에 하나의 고유 번호를 연결해야합니다. 예를 들어, 매핑 수

  • 정점 0 ---> (100, 200)
  • 정점 1 ---> (45, 78)
  • 정점 2 ---> (198, I 모든 정점에 대한 목록을 만들어

213) 예 : nodes[1] 정점의 좌표를 제공하는 nodes = [[100,200],[45,78],[198,213]]

1.

,

그리고 인접 목록은 목록의 목록 형식입니다.

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

adj_list[1]

당신에게 노드 1에 인접한 노드의 목록을 제공합니다. 등등 ..

이 수단 (직접 연결하는) 정점 0에 인접하면 정점 1~3

인접한 꼭지점 (1, 2)을 가지고,는 정점 0, 4, 5가 .. .

이 솔루션이 내 문제에 더 적합하다는 것을 알게되었습니다. 답장을 보내 주신 Dave와 Jiri에게 감사드립니다.