Javascript 交叉筛选组a筛选维度

Javascript 交叉筛选组a筛选维度,javascript,d3.js,crossfilter,Javascript,D3.js,Crossfilter,创建新维度后(按日期,javascript的日期对象) 我过滤维度以删除日期在我选择的任意日期之前的所有数据 var filteredDim = byDate.filterFunction(function (d) { return d >= startDate; }); 此行打印通过筛选的所有对象的数组。(工作正常) 此行打印键值对象数组。 我希望这些键只能是那些通过过滤器的键,这意味着在提供给过滤器函数的任意选择日期之后出现的日期。 实际上,数组包含所有日期的键(也包括未过滤的日期)

创建新维度后(按日期,javascript的日期对象)

我过滤维度以删除日期在我选择的任意日期之前的所有数据

var filteredDim = byDate.filterFunction(function (d) { return d >= startDate; });
此行打印通过筛选的所有对象的数组。(工作正常)

此行打印键值对象数组。 我希望这些键只能是那些通过过滤器的键,这意味着在提供给过滤器函数的任意选择日期之后出现的日期。 实际上,数组包含所有日期的键(也包括未过滤的日期),它们的值是原始值,就好像根本没有过滤一样

console.log(filteredDim.group(d3.time.day).top(Infinity));
我想知道如何对已过滤的维度进行分组,并仅对过滤后的值进行分组

谢谢

更新: 事实证明,这种行为在设计上是正常的。
有人能建议一种解决方法吗?

交叉过滤器组尊重所有过滤器,但定义它们的维度除外。在不同维度上定义您的组,它将按照您的预期进行筛选


我知道这篇文章非常古老,但我的解决方案可能会对某些人有所帮助

正如伊桑所说:

组尊重所有筛选器,但其所在维度的筛选器除外 定义了

作为一种解决方法,您只需从要分组的维度创建一个临时交叉过滤器

在上面的例子中,它将类似于:

tempCrossfilter = crossFilter(filteredDim.top(Infinity))

tempDimension = tempCrossfilter.dimension(function (d) { return d.date; });

filteredGroup = tempDimension.group(d3.time.day).top(Infinity)
console.log(filteredDim.group(d3.time.day).top(Infinity));
tempCrossfilter = crossFilter(filteredDim.top(Infinity))

tempDimension = tempCrossfilter.dimension(function (d) { return d.date; });

filteredGroup = tempDimension.group(d3.time.day).top(Infinity)