5

JavaScript を使用してグラフ (DAG) データ構造に解析する必要がある文字列があります。データ構造には、ノードの ID、名前、別のノードへのリンクが存在する場合にリンクに付けられるラベルなど、いくつかの属性を保存する必要があります。したがって、例は次のようになります

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

など。データ構造が作成されたら、それを読み取る以外の操作を行う必要はありません (後で d3 でビジュアライゼーションをレンダリングするために使用します)。いくつかのノードが共有されているため、ノードの数はそれほど多くありません。

隣接リストを想像していますが、それを JavaScript でエンコードする方法がわかりません。たとえば、json オブジェクトが "field" : "value" 構造を持つことができることはわかっていますが、Object : [隣接するオブジェクトのリスト] でそれを行うことはできますか?

4

2 に答える 2

9

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

name フィールドは実際には必要ありませんが、必要な属性をノードに関連付けることができます。

于 2012-09-30T03:51:43.170 に答える
1

JavaScript オブジェクトには文字列キーが必要ですが、任意の型の値を格納できます。もちろん、id の全体的なポイントは、複雑なタイプを単純なタイプで表現できるようにすることです。

var adjacentTo = {};
adjacentTo[node1.id] = [node2, node3]
于 2012-09-28T20:18:58.073 に答える