D3.js d3-如何在v5中返回d.type?

D3.js d3-如何在v5中返回d.type?,d3.js,D3.js,我一直在3.x版中使用d.type,例如: if ( d.type == 'unit' ) 但这在v5中不起作用,在v5中我得到“未定义”。我查看了v5中的更改,但看不到对d.type的任何引用 因此,在d3树的JSON中,我有一个“type”字段: {"name":"MD","children":[{"name":"Professional","type":"theme","children":[{"name":"Professional Behavours","type":"strand

我一直在3.x版中使用d.type,例如:

if ( d.type == 'unit' )
但这在v5中不起作用,在v5中我得到“未定义”。我查看了v5中的更改,但看不到对d.type的任何引用

因此,在d3树的JSON中,我有一个“type”字段:

{"name":"MD","children":[{"name":"Professional","type":"theme","children":[{"name":"Professional Behavours","type":"strand","children":[{"name":"Year 1","children":[{"name":"Integrated Medical Sciences 1","type":"unit"},
我正在使用d.type返回节点的类型…例如<代码>d.type=='unit'


请参阅d3 v3.5中的这项工作,其中在右键单击节点时返回节点类型。

使用d3层次结构时,源层次结构数据中的每个节点都会获得与其在层次结构中的位置相关的许多属性。这些属性包括叶子、祖先等

将d3层次结构的结果传递给布局生成器(如d3.tree或d3.cluster)时,将进一步修改每个节点,使其具有x和y等属性以允许放置

为了避免属性名称中的潜在冲突,并清楚地描述与任何给定节点关联的数据,将与节点关联的数据放置到新的
data
属性中

因此,如果原始数据的节点属性为
类型
,则一旦通过d3层次结构,该属性现在位于
data.type
。因此,在您的示例中,应该使用
d.data.type

var svg=d3.选择(“svg”)
var tree=d3.tree().size([100100]);
变量treeData={
“名称”:“程序”,“类型”:“程序”,
“儿童”:[{
“名称”:“单位”,“类型”:“单位”,
}]
};
var root=d3.层次结构(treeData);
svg.selectAll(空)
.data(树(根).substands())
.输入()
.附加(“圆圈”)
.attr(“cx”,函数(d){返回d.y+100;})
.attr(“cy”,函数(d){返回d.x;})
.attr(“r”,10)
.on(“单击”,函数(d){console.log(d.data.type);})


你能发布你的全部代码(工作实例)吗?试试
d.data.type
@Andrew Reid谢谢!你想把它变成一个答案吗?可以做,会马上做。只是一个小问题,关于d.class,这需要在v5中进行更改吗?