javascript - 如何使用交叉过滤器按类别返回唯一值的数量?

标签 javascript arrays unique crossfilter

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

下面,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}
]"

最佳答案

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

关于javascript - 如何使用交叉过滤器按类别返回唯一值的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188140/

相关文章:

javascript - 定义指令时 'controller' 、 'link' 和 'compile' 函数之间的区别

javascript - 从对象数组创建字符串的最简单方法

php - 计算、突出显示和打印两个数组之间的重复项

javascript - typescript 如何将新项目添加到空对象数组

postgresql - postgres 中表继承需要索引吗?

c# - 在两个数组中查找唯一字符串 C#

javascript - jquery动态内容生成的动态内容

javascript - Webpack 错误无法解析 JSX

php - Friend_array 删除

python - 将组中的唯一值存储到 Pandas 中的另一列