如何使用crossfilter按类别返回唯一值的数量?

时间:2014-08-07 16:57:49

标签: javascript arrays unique crossfilter

下面我将获取给定的数组并为Category创建一个维度。然后我使用group()和reduceCount()来获取Category中的计数。但是,我想获得该类别的唯一唯一计数,而不仅仅是计数。

下面,A有2个唯一ID,B有4个唯一ID,C有5个唯一ID。

var data = [{
    Category: "A",
    ID: "1"
}, {
    Category: "A",
    ID: "1"
}, {
    Category: "A",
    ID: "1"
}, {
    Category: "A",
    ID: "2"
}, {
    Category: "A",
    ID: "2"
}, {
    Category: "B",
    ID: "1"
}, {
    Category: "B",
    ID: "1"
}, {
    Category: "B",
    ID: "1"
}, {
    Category: "B",
    ID: "2"
}, {
    Category: "B",
    ID: "3"
}, {
    Category: "B",
    ID: "3"
}, {
    Category: "B",
    ID: "3"
}, {
    Category: "B",
    ID: "4"
}, {
    Category: "C",
    ID: "1"
}, {
    Category: "C",
    ID: "2"
}, {
    Category: "C",
    ID: "3"
}, {
    Category: "C",
    ID: "4"
}, {
    Category: "C",
    ID: "5"
}];

以下显示了crossfilter的唯一计数

var ndx = crossfilter(data); 

var XDimension = ndx.dimension(function (d) {
    return d.Category;
});
var YDimension = XDimension.group().reduceCount(function (d) {
    return d.Category;
});

它返回此

"[object Object](3) = [
    {"key":"B","value":8},
        {"key":"C","value":5},
        {"key":"A","value":5}
    ]"

但我希望它能归还:

"[object Object](3) = [
    {"key":"B","value":4},
    {"key":"C","value":5},
    {"key":"A","value":2}
]"

1 个答案:

答案 0 :(得分:-1)

您需要一个自定义缩减器来跟踪您之前看过的ID属性中的值。您可以自己执行此操作,也可以使用reductio之类的库。有一个如何在自述文件中执行此操作的示例。我称之为“异常聚合”。