【问题标题】:D3.js - Conditional apply nest.key() function to array elementsD3.js - 有条件地将 nest.key() 函数应用于数组元素
【发布时间】:2013-06-03 23:45:58
【问题描述】:

我有一个代表分层树数据的 CSV:

industry,level1,level2,level3,name
Ecommerce,Web,,,Rakuten
Ecommerce,Crowdsourcing,,,Lancers
Social,Photo sharing,Deco apps,,Snapeee
Social,Photo sharing,Deco apps,Collage apps,DecoAlbum
Portals,,,,Yahoo Japan

level1...level3 行代表子节点,name 行代表底部节点。我正在尝试应用 d3.nest() 函数来获取分层 JSON 对象。特别是,我想摆脱级别行为空的节点。到目前为止,我有以下代码:

d3.csv("data.csv", function(rows) {
  sunburst_tree = d3.nest()
    .key(function(d) { return d.industry; })
    .key(function(d) { return d.level1; })
    .key(function(d) {  if (!(typeof d.level2 === 'undefined')) return d.level2; })
    .entries(rows);

  console.log(sunburst_tree);
});

生成带有空键的 JSON 对象,如下所示:

{"key":"Portals",
"values":[{"key":"",
    "values":[{"key":"",
        "values":[{"industry":"Portals","level1":"","level2":"","level3":"","name":"Yahoo Japan"}]
        }]
    }]
}

相反,我想删除所有空子节点:

{"key":"Portals",
    "values":[{"industry":"Portals",
               "level1":"","level2":"","level3":"","name":"Yahoo Japan"}]}
}

如何做到这一点?

【问题讨论】:

    标签: javascript json d3.js


    【解决方案1】:

    您想拥有多个密钥吗?似乎在您想要的格式中,您只有一个键。

    如果您不想要多个键,则应删除定义键的函数,

    如果您确实需要多个密钥,我建议您在使用函数生成密钥之前使用 if 子句。并检查空字符串为

    d.level1 === "" 
    

    应该有帮助。

    【讨论】:

      猜你喜欢
      • 2020-08-16
      • 2019-02-11
      • 2023-01-29
      • 2023-01-24
      • 2016-08-10
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      相关资源
      最近更新 更多