创建新维度后(按日期,javascript的日期对象)。
var byDate = cf.dimension(function (d) { return d.date; });
我过滤维度以删除所有数据,其日期早于我选择的任意日期。
var filteredDim = byDate.filterFunction(function (d) { return d >= startDate; });
此行打印通过过滤的所有对象的数组。 (正常工作)
console.log(filteredDim.top(Infinity));
此行打印一组键值对象。 我希望键只是那些通过过滤器的键,这意味着在提供给过滤器功能的任意选择日期之后发生的日期。 实际上,数组包含所有日期的键(未过滤的),它们的值是原始值,就像根本没有过滤一样。
console.log(filteredDim.group(d3.time.day).top(Infinity));
我想知道如何对已过滤的维度进行分组并仅对过滤后的值进行分组?
由于
更新 事实证明,这种行为在设计上是正常的。 有人可以提出解决方法吗?
答案 0 :(得分:3)
Crossfilter组尊重所有过滤器,但定义它们的维度。在不同的维度上定义您的论坛,它将按照您的预期进行过滤。
https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_group
答案 1 :(得分:0)
我知道这篇文章过时了,但是我的解决方案可能会对某人有所帮助。
就像伊桑(Ethan)所说的:
组尊重所有过滤器,但过滤器所在的维度除外 被定义。
作为一种解决方法,您可以简单地根据要分组的维度创建一个临时交叉过滤器。
在上面的示例中,它将类似于:
tempCrossfilter = crossFilter(filteredDim.top(Infinity))
tempDimension = tempCrossfilter.dimension(function (d) { return d.date; });
filteredGroup = tempDimension.group(d3.time.day).top(Infinity)