D3.js -有条件地对数组元素应用nest.key()函数
D3.js - Conditional apply nest.key() function to array elements
我有一个表示分层树数据的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对象。特别地,我想去掉那些level行为空的节点。到目前为止,我有以下代码:
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"}]}
}
如何实现这一点?
您想要多个密钥吗?似乎在你想要的格式中,你只有一个键。
如果你不想要多个键,你应该删除定义键的函数,
或
如果你想要多个键,我建议在你使用你的函数生成键之前有一个if子句。检查空字符串
d.level1 === ""
应该帮助。
相关文章:
- KeyPress和Keydown在这个特定的代码上不起作用.只有key-up起作用
- 如何获取文本框组的值,并使用jquery将它们放入(key:Value)数组中
- 使用lodash从对象数组中获取uniq[key,value]
- 显示多个具有相同源javascript(map(key,value))数据的图表
- 在key up函数上将文本框值传递给javascript
- JavaScript使event.key警报event.keyCode的基本polyfill实现Chrome的现代化
- 在 Forerunner 数据库集合中创建主键时,key 属性是否可以位于集合对象的对象内部
- D3:使用 nest 函数将带有父键的平面数据转换为层次结构
- 如何限制 .key down JavaScript 事件
- 由于重定向URI无效,Key斗篷令牌请求被拒绝
- 纯Javascript:相当于jQuery$.data('key',value)
- jsonobj.key名称没有返回其对应键的完整值
- 取消以前的Jquery Form Submit on Key Up
- Javascript:如何迭代对象[Key:value],但跳过一些键([最快的方法])
- chrome.storage.local.set using a variable key name
- HTMLJavascript - get ATLCTRLSHIFT key press
- 使用jquery.ech()循环创建Object Key
- Chrome报告e.key=Del键未定义
- 检查Object.key()是否与变量匹配
- D3.js -有条件地对数组元素应用nest.key()函数