javascript - d3.js - 确定嵌套深度(或 child 的 child )

标签 javascript svg d3.js nested depth

我有一个数据可视化,它目前根据对象是否有 child 来为对象分类,如下所示:

d3.json("skills.json", function(error, root) {
  var node = svg.datum(root).selectAll(".node")
    .data(pack.nodes)
    .enter().append("g")
    .attr("class", function(d) { return d.children ? "node" : "leaf node"; })

我想做的是根据他们的深度,或者至少,根据他们是否有 child 的 child ,给他们一个不同的类(class),基本上是这样的(虽然我不确定语法):

.attr("class", function(d) { return d.children.children ? "node" ? d.children ? "branch" : "leaf node"; });

有谁知道这样做的正确方法吗?

最佳答案

你可以使用 array.some查看当前节点的任何子节点是否有子节点。

node.attr("class", function(d) {
  return d.children ? (d.children.some(function(c) { return c.children; })
      ? "grandparent" 
      : "parent")
      : "child";
});

关于javascript - d3.js - 确定嵌套深度(或 child 的 child ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14821633/

相关文章:

javascript - Raphael JS 如何让内联 SVG 在 Firefox 3.6 中工作?

python - 当我运行 `for glyph in font.iter(' glyph')` 时,为什么 etree 没有从我的 SVG 中返回任何内容?

javascript - 在没有翻译的情况下使用 d3 SVG Scale

javascript - Alpine JS 表格数据绑定(bind)

javascript - 拆分导航溢出 - 如果浏览器窗口宽度较小,则将页眉拆分为页脚

javascript - 如果...否则 : If iFrame exists, 将 CSS 应用于页面?

javascript - 混合 browserify 和 webpack 外部组件

html - 使用内联 svg 作为其他元素的背景

javascript - 在 D3.js 中的 Bundle 布局中读取 JSON 文件时出错

javascript - 在 <svg> 容器中通过 d3 实现 <div> 工具提示