首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3.js -有条件地将nest.key()函数应用于数组元素

D3.js -有条件地将nest.key()函数应用于数组元素
EN

Stack Overflow用户
提问于 2013-06-04 07:45:59
回答 1查看 895关注 0票数 2

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

代码语言:javascript
复制
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对象。具体地说,我希望去掉级别行为空的节点。到目前为止,我有以下代码:

代码语言:javascript
复制
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对象,如下所示:

代码语言:javascript
复制
{"key":"Portals",
"values":[{"key":"",
    "values":[{"key":"",
        "values":[{"industry":"Portals","level1":"","level2":"","level3":"","name":"Yahoo Japan"}]
        }]
    }]
}

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

代码语言:javascript
复制
{"key":"Portals",
    "values":[{"industry":"Portals",
               "level1":"","level2":"","level3":"","name":"Yahoo Japan"}]}
}

如何做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2013-07-25 02:47:54

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

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

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

代码语言:javascript
复制
d.level1 === "" 

应该会有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16907609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档