0

ノードとリンクで構成される 1 つのオブジェクトを持つ JSON 配列があります。

data = [Object]=[ { nodes: Array[..] ,links: Array[…] } ]

これで問題ありませんが、たとえばリンクにアクセスするには data[0].links を使用する必要があり、これは少し面倒です。data.links がリンクにアクセスできるように、配列をオブジェクトにしたいと思います。私は設定しようとしました:

data = data[0];

しかし、その後、オブジェクトの配列である data.links は「未定義」として表示されます。たとえば、特定の要素にアクセスすると、値が表示されるようdata.links[3].nameです。何故ですか?

編集:

すなわち:

if data = [ { ノード: 配列[...] ,リンク: 配列[...] } ] =>

console.log(data[0].links); //shows the data[0].links[0].name = value in the console

if data = { ノード: 配列[...] ,リンク: 配列[...] } =>

console.log(data.links); //shows data[0].links[0].name = undefined

しかし興味深いことに

console.log(data.links[0].name); //shows the correct value.
4

1 に答える 1

1

いくつかの解決策:

JSON 出力を制御する場合は、[]基本的にオブジェクトを配列でラップしている囲み括弧を削除するだけです。

data = { nodes: [...] ,links: [...] };

JSON を制御しない場合は、実際に操作したい変数に配列のゼロ インデックスを割り当てるだけです。

json = [ { nodes: [...] ,links: [...] } ];
data = json[0];

残念ながら、「links」は配列です。その配列のメンバーにアクセスするには、そのインデックス値にアクセスする必要があります。

于 2012-11-02T21:15:47.837 に答える