私は、インタラクティブな D3.js キャンバスでノードを展開するためのこのクレイジーな for ループを持つプロジェクトで作業しています。本質的に、私が望むのは、すべての子を拡張することです。したがって、オブジェクトに子がある場合は、それらを展開したいと考えています。
これからコードのチャンクを切り取りました。for ループが多すぎてばかげています。これを単純な「すべての子を見つけて、toggle(); と update(); をプリフォーム」に減らすにはどうすればよいですか?
$('.expandAll').click(function(e) {
e.preventDefault();
length = root.children.length;
for (var i = 0; i < length; i++) {
toggle(root.children[i]);
update(root);
if (root.children[i]['children']) {
childlength = root.children[i]['children'].length;
for (var j = 0; j < childlength; j++) {
toggle(root.children[i]['children'][j]);
update(root);
if (root.children[i]['children'][j]['children']) {
childlength2 = root.children[i]['children'][j]['children'].length;
for (var k = 0; k < childlength2; k++) {
toggle(root.children[i]['children'][j]['children'][k]);
update(root);
}
}
}
}
}
});