使用 Crossfilter 获取唯一值

Getting unique values using Crossfilter

我是 Crossfilter 的新手,所以我很抱歉。

我正在开展一个项目,我将数据引入页面,然后允许用户使用 select 元素过滤数据。每个 select 过滤器对应一个 Crossfilter 维度。基于 selected 过滤器,相应的数据将显示在页面中。我让所有这些都正常工作,包括同时使用多个过滤器(并且每个过滤器可以包含多个值)。

我想做的是显示由 selected 组组织的数据。例如,如果我的数据有 3 列:Office、Department 和 Gender,则用户可以筛选 Office = [New York, Atlanta] 和 Gender = [Female]。然后用户可以按部门(或另一列)对结果进行分组。例如,如果 100 个匹配项中有 20 个基于上面列出的过滤器,则这些结果可以按部门分组如下:8 个市场营销、7 个销售和 5 个 IT。

(现在分组的顺序不相关。)

数据中还有其他部门未包含在过滤结果中(如 HR、安全、运营等)

在代码应用过滤器并显示结果时,我似乎没有办法显示仅与这 20 个项目关联的唯一部门值。当我做这样的事情时:

deptDimension.group().all().forEach(function(d) {

它列出了所有 100 条记录中的所有部门,甚至包括那些不在当前筛选结果中的部门。

如何从给定维度中获取符合现有过滤器的唯一值列表?

此外,如果有人知道如何按照部门维度的 groups/unique 值的顺序迭代结果,那也会有所帮助。

如果您不想要,我建议过滤掉零值组:

deptDimension.group().all()
  .filter(function(d) { return d.value; })
  .forEach(function(d) { ...

您的示例的更新版本(同时修复了一些其他问题):https://jsfiddle.net/8g04rzuf/