我有一个数据集,比如
{"parent":"/home","inside":"/files","filename":"type.jar",
"extension":"jar","type":"modified","archive"}
同样,json 数组中也有很多行。我正在使用交叉过滤器来读取数据并绘制图形和数据表。数据集中的类型具有值"已添加"、"已修改"和"已删除"。
我想创建一个数据表,例如
扩展 |已添加 |修改 |删除
添加、修改和删除的位置将保存具有特定扩展名的文件计数。谁能建议我一种方法?
到目前为止,我已经创建了一个这样的维度:
var extensionType = facts.dimension(function(d) {
return d.extension; });
var extensionTypeGroup=extensionType.group();
我得到这样的分组输出,
{"key":"class","value":424},
{"key":"js","value":176},
{"key":"properties","value":26},
{"key":"jar","value":10},
{"key":"css","value":8},
{"key":"txt","value":6},
{"key":"war","value":4},
{"key":"png","value":4},
{"key":"handlebars","value":4},
{"key":"jar_local","value":2},
{"key":"aar","value":2}
如何获取已添加的已删除和修改的单独计数?
可能最简单的方法是简化为对象而不是单个值。
常见问题解答中对此进行了介绍:如何一次减少多个值?如果行包含单个值,但每行包含不同的值,该怎么办?您可能只需要正确的搜索词即可找到它。
实际上,看起来FAQ中的代码将未经修改地为您工作:
var extensionTypeGroup = extensionType.group().reduce(
function(p, v) { // add
p[v.type] = (p[v.type] || 0) + v.value;
return p;
},
function(p, v) { // remove
p[v.type] -= v.value;
return p;
},
function() { // initial
return {};
});