Javascript d3。根据阵列内容更改单个节点的颜色

Javascript d3。根据阵列内容更改单个节点的颜色,javascript,colors,d3.js,geometry,Javascript,Colors,D3.js,Geometry,几天后我就开始和d3一起工作了。我选择显示另一个项目的层结构。本例中的d3函数正是我的。我所做的唯一更改是要求项目中的节点在树中显示它们,而不是使用flare.json 因此,我询问了状态(是否启用)。请参阅下面的代码。如果启用了图层,则节点的圆圈应为绿色。如果未启用,则节点的圆圈应为红色。状态被赋予一个数组 var statusarray = []; for (i = 0; i < operational.children.length; i++ ) { //var statu

几天后我就开始和d3一起工作了。我选择显示另一个项目的层结构。本例中的
d3
函数正是我的。我所做的唯一更改是要求项目中的节点在树中显示它们,而不是使用
flare.json

因此,我询问了状态(是否启用)。请参阅下面的代码。如果启用了图层,则节点的圆圈应为绿色。如果未启用,则节点的圆圈应为红色。状态被赋予一个数组

var statusarray = [];
for (i = 0; i < operational.children.length; i++ ) {

    //var status to save children enabled-status at [i]
    var status = operational.children[i].get("enabled");

    //test output for operational.children at [i]
    console.log(operational.children[i].id + " steht auf " + status) ;

    //Create Array (statusarray) for status with length of operational children (saves true and false)
    statusarray[i] = status;
}
我开始用以下内容来填充它:

 for (i = 0 ; i < main.children.length; i++) {
                 // Array for children from root
                   var layer = main.children;
                 // Create childrn from Layers in Arrays and fill myjson with them
                   d_array.forEach(layer[i].children, function (ArrayElement) {
                       myjson.children[i].children.push({"name": ArrayElement.id});
                   }, this);
                  }
for(i=0;i

感谢您的帮助

您甚至不需要额外的数组,只需简单地执行即可

nodeEnter.append("circle")
  .attr("r", 1e-6)
  .style("fill", function(d) {
    return d.enabled ? "green" : "red";
});
编辑:如果确实需要额外的数组,可以使用索引进行交叉引用

nodeEnter.append("circle")
  .attr("r", 1e-6)
  .style("fill", function(d, i) {
    return statusarray[i] ? "green" : "red";
});

我看到的问题。我对treedata使用var myson。没有“已启用”的条目。我只能在另一个项目中获取启用状态。好的,我将编辑答案以使用与节点顺序相同的另一个数组。虽然工作不完全,但您帮助我的不仅仅是复制和粘贴它。我想我开始明白了。我将处理这个问题并发布我的解决方案。thanksok我的新问题是数组用于我的所有节点。因此,如果我在图中有10个节点打开,我会得到其他颜色,就像我有20个节点打开一样,依此类推。那么,我如何才能对整个树这样做呢?
nodeEnter.append("circle")
  .attr("r", 1e-6)
  .style("fill", function(d, i) {
    return statusarray[i] ? "green" : "red";
});