Javascript 如何使用交叉过滤器按类别返回唯一值的数量?
下面我获取给定的数组并为Category创建一个维度。然后我使用group和reduceCount来获得类别内的计数。但是,我希望得到类别的唯一计数,而不是简单的计数 下面,A有2个唯一ID,B有4个唯一ID,C有5个唯一IDJavascript 如何使用交叉过滤器按类别返回唯一值的数量?,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:
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是一个库,用于进行定制的交叉过滤器分组,它可以满足您的需要,也可以自己进行。交叉过滤器文档中有一些示例。