5

D3 でツリー階層を使用しようとしていますが、行き詰まりました。JSON を正しく構築していると思っていましたが、Developer's Tool でオブジェクトを見ると、次のように表示されます。

クロム

最初の行は依存配列の長さが 0 であることを示していますが、展開すると、依存配列に 3 つのオブジェクトがあることがはっきりとわかります。文字列化すると、次のようになります。

{"attributes":{"id":0,"name":"root"},"dependents":[]} 

何が間違っている可能性がありますか?ありがとう!

4

1 に答える 1

6

この問題は通常、ログに記録した後にオブジェクトを変更したときに発生します。これは、ログに記録するときに Chrome がオブジェクトをディープコピーせず、単に参照を保存するためです。

ツリーはすぐには構築されませんが、必要な場合にのみ構築され、より最近の値に基づいている場合もあります。

オブジェクトが十分に軽い場合、ロギング時に値を本当に見たい場合は、自分で複製できます。

console.log(JSON.parse(JSON.stringify(myobject)));

オブジェクトが大きいか再帰的である場合、クローンを作成するのが少し難しくなることがあります。個人的には、独自のツールJSON.prune.logがあります。

ブラウザの最適化を無視するとコストがかかるため、ロギング時間の値を確認したい場合は、ほとんどの場合、この動作を考慮してプリミティブのみをログに記録する必要があります...

于 2013-03-08T15:30:54.007 に答える