我在 D3 中处理树木,到目前为止,这很有趣。给定用户点击内部节点(圆圈),我想
- 提供所有叶子名称的列表
- 为从该节点到叶子的所有路径着色。
这是我为此目的编写的一些代码
var circles = nodeEnter.append("svg:circle")
.attr("r", function(d){ return d.children ? 5 : 0; })
.on("click", get_all_children);
function get_all_children(d){
var all_children = get_all_childs(d);
console.log("end, our array has: "+all_children.length+" elements");
all_children.forEach(function(elem){
console.log(elem.name);
});
}
function get_all_childs(d, all_childs){
var all_children = new Array;
all_children.push(all_childs);
if(d.children){
var children = d.children;
for (var i = 0; i < children.length; i++) {
var temp_array = get_all_childs(children[i], all_children);
console.log("got from recursion: : "+temp_array.length+" children");
all_children.push(temp_array);
}
}
else{
//return all_children;
//console.log("end, our array has: "+all_children.length+" elements");
}
return all_children;
}
看起来我的递归工作不正常。你能帮我解决这个问题吗?