嗨,我是JS和Crossfilter的新手。我正在使用crossfilter和我的数据(.csv
文件)并使用
var scoreDim = ppr.dimension(function (d) {
return d.score;
});
我也可以使用
获取每个值的计数var scoreDimGroup = scoreDim.group().reduceCount();
我可以使用dc.js
绘制图表,结果看起来正确。但是如何检索scoreDim
和scoreDimGroup
中的值,以便我可以在代码中使用它进行进一步处理。当我使用调试器查看对象时,我可以看到一堆函数,但无法看到对象中包含的实际值。
答案 0 :(得分:10)
scoreDim.top(Infinity)
将检索记录。
scoreDimGroup.top(Infinity)
将检索组(维度值和计数的键值对)。
一般来说,Crossfilter API documentation中很好地涵盖了这种事情。
答案 1 :(得分:3)
您可以使用组对象的top方法:
var groupings = teamMemberGroup.top(Infinity);
这将返回一个组数组,这些组将具有您在reduce方法中构建的结构。例如,要输出键和值,您可以执行以下操作: groupings.forEach(function(x){ console.log(x.key + x.value.projectCount); });
您可以采用相同的方式访问维度值:
var dimData = teamMemberDimension.top(Infinity);
dimData.forEach(function (x) {
console.log(JSON.stringify(x));
});
上提供了一个很好的教程
答案 2 :(得分:2)
如果您希望在控制台中查看这些值,则可以使用本教程中提到的 print_filter 函数!
(http://www.codeproject.com/Articles/693841/Making-Dashboards-with-Dc-js-Part-1-Using-Crossfil)
在定义数据源或ndx变量之前,基本上你会在交叉滤波器图表的javascript渲染中包含这些代码:
function print_filter(filter) {
var f = eval(filter);
if (typeof(f.length) != "undefined") {}else{}
if (typeof(f.top) != "undefined") {f=f.top(Infinity);}else{}
if (typeof(f.dimension) != "undefined") {f=f.dimension(function(d) { return "";}).top(Infinity);}else{}
console.log(filter+"("+f.length+") = "+JSON.stringify(f).replace("[","[\n\t").replace(/}\,/g,"},\n\t").replace("]","\n]"));
};
然后您只需在控制台中运行 print_filter(scoreDim)即可!就这么简单!您可以使用它来查看使用crossfilter创建的所有对象,包括组等。
希望这有帮助!