使用Crossfilter,是否可以在分组时跟踪最大/最小值?

Nor*_*ton 14 javascript crossfilter

使用Crossfilter(https://github.com/square/crossfilter)时,我指定在添加和删除组中的数据时要使用的函数.跟踪运行平均值(使用CoffeeScript)非常简单:

reduceAdd = (p, v) ->
  ++p.count;
  p.sum += v.digit;
  p

reduceRemove = (p, v) ->
  --p.count;
  p.sum -= v.digit;
  p

reduceInitial = ->
  {
    count: 0
    sum: 0
    average: ->
      return 0 if this.count == 0
      return this.sum / this.count
  }
Run Code Online (Sandbox Code Playgroud)

是否可以跟踪每组的最大值和最小值?我无法弄清楚如何将所有元素保存在一个巨大的数组中并执行d3.min/d3.max.似乎添加/删除数据效率极低.

我还想方设法告诉Crossfilter从头开始完全重建组,而不是从现有组中删除项目.如果应用过滤器,则重置并重建该组.什么都不明显.

Ric*_*ole 9

您可以使用dimension.top(1)dimension.bottom(1)来检索当前的最小值和最大值.这些方法涉及在交叉过滤器上可能有效的任何过滤器.

  • 你如何使用dimension.top和dimension.bottom来获得每组的最大值和最小值? (2认同)

Cam*_*ike 0

经过一番尝试后,您只需再次调用 group 方法即可重建组。