Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用交叉过滤器按类别返回唯一值的数量?_Javascript_Arrays_Unique_Crossfilter - Fatal编程技术网

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

Javascript 如何使用交叉过滤器按类别返回唯一值的数量?,javascript,arrays,unique,crossfilter,Javascript,Arrays,Unique,Crossfilter,下面我获取给定的数组并为Category创建一个维度。然后我使用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:

下面我获取给定的数组并为Category创建一个维度。然后我使用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"
}];
下面显示了交叉过滤器的唯一计数

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属性中看到的值。你可以自己做,也可以使用像这样的库。自述文件中有一个例子说明了如何做到这一点。我称之为异常聚合。

我的主要问题是,我需要将它作为一个维度提供给DC,这是什么意思?上面显示的输出看起来像group.all的结果。如果要以这种方式更改组计数的工作方式,则需要使用自定义分组。ReduceTio是一个库,用于进行定制的交叉过滤器分组,它可以满足您的需要,也可以自己进行。交叉过滤器文档中有一些示例。