我正在處理一個項目,該項目有一個瘋狂的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
遞歸!遞歸!遞歸! –
你知道嗎,遞歸函數是什麼? 是否遞歸 –