我正在处理一个项目,该项目有一个疯狂的for循环来展开D3.js画布交互式中的节点。基本上,我想要的是扩大所有的孩子。所以如果一个物体有一个孩子,我想扩大它们。For循环在对象上失控
我从这里删去了一大块代码。有太多的循环是荒谬的。我怎样才能减少到一个简单的“找到所有的孩子,preform切换();和更新();”?
$('.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);
}
}
}
}
}
});
这......这是失控了!停止主反应堆! ......但真的。为什么不只是建立一些功能? – jdero
递归!递归!递归! –
你知道吗,递归函数是什么? 是否递归 –