在crossfilter.dimension中检索值

时间:2014-02-24 15:37:01

标签: javascript crossfilter dc.js

嗨,我是JS和Crossfilter的新手。我正在使用crossfilter和我的数据(.csv文件)并使用

在列中检索不同的值
var scoreDim = ppr.dimension(function (d) {
    return d.score;
});

我也可以使用

获取每个值的计数
var scoreDimGroup = scoreDim.group().reduceCount();

我可以使用dc.js绘制图表,结果看起来正确。但是如何检索scoreDimscoreDimGroup中的值,以便我可以在代码中使用它进行进一步处理。当我使用调试器查看对象时,我可以看到一堆函数,但无法看到对象中包含的实际值。

enter image description here

3 个答案:

答案 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));
    });

以下是一个简单示例:http://jsfiddle.net/djmartin_umich/T5v4N/

Rusty在http://blog.rusty.io/2012/09/17/crossfilter-tutorial/

上提供了一个很好的教程

答案 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创建的所有对象,包括组等。

希望这有帮助!