список смежности с использованием объекта json - PullRequest
1 голос
/ 26 августа 2011

Я хочу создать список смежности, используя объект json. Я хотел бы реализовать объект json для списка смежности в следующем формате.

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

Я сомневаюсь, могу ли я динамически добавлять значения в список координат, такие как JSONobj.node3[0]={x4,y4}? или есть ли лучший способ добавить значения в JSONobj вне объявления объекта?

Ответы [ 3 ]

1 голос
/ 26 августа 2011

Вы можете помещать элементы в объект JSON, так как это просто симпатичный массив.

JSONobj.push({"newElement":"value"});
0 голосов
/ 01 сентября 2011

Я столкнулся с некоторой проблемой, когда использую JSON для реализации списка смежности.Во-первых, я не могу использовать «целочисленное значение» в качестве идентификатора в паре «идентификатор: значение».поэтому я переосмыслил свою проблему и подошел по-другому, и я реализовал список смежности, как показано ниже (в виде списка списка).

Текущее решение

Представлениекаждый узел графа по своим декартовым координатам действительно является представлением низкого уровня.На уровне алгоритма нам нужно связать одно уникальное число с каждой вершиной;например, вы можете отобразить:

  • вершина 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 ...

Я нашел это решение более подходящим для моей проблемы.Спасибо Дейву и Иржи за их ответ.

0 голосов
/ 26 августа 2011

JSON в Javascript - это обычный (структурированный) объект Javascript. Итак, прежде всего он должен придерживаться синтаксиса объекта. node1, x1 и т. Д. Должны быть определенными переменными или явными константами. {x1, x2} не определено в JS. Это должно быть 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 в JSON-объект в JS, используйте:

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