数据结构来表示在JavaScript中DAG(Data Structure to represent

2019-09-23 04:53发布

我有一个字符串,我需要使用javascript解析成图(DAG)的数据结构。 包括在数据结构是是考虑到链接,如果存在一个到另一个节点的几个属性,我应该保存,如节点的ID,名称和标签。 因此,一个例子是

Node1 (id: 1, name: 'first') --('link name')--> Node2 (id:....)

等等。 一旦数据结构创建我不需要做任何更多的操作以外读它(我将使用它来渲染与D3可视化)。 节点的数量不会很多,因为几个人的共享。

我想象邻接表,但我不知道我怎么会编码在JavaScript。 举例来说,我知道一个JSON对象可以有一个“田”字:“值”的结构,但我可以做到这一点与对象:相邻对象列表]?

Answer 1:

您可以在JSON使用列表(阵列)。 例如,我可以代表一个简单的向图的

{
  "NodeA": {"name": "NodeA", "adjacentTo": ["NodeB", "NodeC"]},
  "NodeB": {"name": "NodeB", "adjacentTo": ["NodeC", "NodeD"]},
  "NodeC": {"name": "NodeC", "adjacentTo": ["NodeA"]},
  "NodeD": {"name": "NodeD", "adjacentTo": []}
}

这将是图表:

C
^^
| \
|  \
A -> B -> D

名称字段真的是没必要的,但你可以用一个节点这样你想要的任何属性相关联。



Answer 2:

JavaScript对象必须有串钥匙,但可以存储任何类型的值。 当然,在一个id整点是让你代表一个复杂类型wirh简单。

var adjacentTo = {};
adjacentTo[node1.id] = [node2, node3]


文章来源: Data Structure to represent a DAG in Javascript