私は継承したJavaScriptコードをいくつか持っています。 jsonデータに基づいて階層ツリーを描画します(D3バージョン3ライブラリを使用)。コードは機能します。私は軽微な変更を加える必要がありますが、修正を行う方法は問題です。私はtreeDataというオブジェクトを持っています。 treeDataは、ツリー内のノードの階層リストです。各ノードには、名前、ID、深さ、x、y、子などのプロパティがあります。 Childrenは現在のノードの子ノードを指す配列です。だから子供たちは子供を持つことができ、子供を持つことができます。私がtreeDataオブジェクトを見ると、私は 'ルート'ノードを見るので、それは10人の子供がいることがわかります。Javascript - Traversing配列のヒラリーオブジェクト
子配列は、構造的に親と同じです...これは最初の子を拡大示しており、私はそれは3人の子供を持っていることがわかります。私のデータは通常3〜4レベルの深さです。
私の課題は、ツリー内のすべてのノードに対して機能を実行する必要があることです。 、
var myNode;
for (var zz = 0; zz <= treeData.children.length; zz++) {
myNode = treeData.children[zz];
collapseNode(myNode);
}
問題は、これはただ1つのレベルで見えるということです。私のようなものを必要とする...私はこれを行うためのエレガントな方法があることを確信しているが、私はそれは何でしょうかわかりません階層をトラバースしない...階層内の各ノードを訪問するためにこれを書き直すにはどうすればよいですか?
をあなたはそれを行うには、再帰関数が必要です。あなたは実際に何をしたいですか? –
これが役に立ちます - https://stackoverflow.com/questions/722668/traverse-all-the-nodes-of-a-json-object-tree-with-javascript –
@Manish - 最終結果...階層内の各オブジェクトは、collapseNode(現在のノード)を呼び出します。 – user1009073