在crossfilter中过滤多个离散值

时间:2012-06-16 03:41:57

标签: javascript d3.js crossfilter

有没有人有办法在多个值上过滤crossfilter对象维度?像

这样的东西
.filterExact(["cash","visa"])

.filter(["cash","visa"])

...但不是它的范围形式......

.filterAll(["cash","visa"])

......但没有清算部分。

或不使用

的等效变通方法/方法
.filterRange(["cash","visa"])

...

或者我错过了API中的内容?

谢谢!

拉​​里

3 个答案:

答案 0 :(得分:12)

我遇到了类似的问题。我解决它的方式是我编写了一个过滤函数,用于检查维度是否位于特定数组中。

// Array of things you want to filter
var f = ["cash", "visa"];
// Assuming "dim" is our dimension
dim.filter(function(d){
  return f.indexOf(d) > -1;
});

这将检查值是否位于该数组中并相应地过滤。

希望这有帮助。

答案 1 :(得分:2)

以下拉取请求看起来会满足您的需求,但尚未合并。

Multiple arguments to filter result in union of filter operations

合并后,您可以执行以下操作。

data.total.filter("cash", "visa");

这会导致所有过滤条件的结合。

答案 2 :(得分:1)

API中似乎没有任何内容,但如果您想避免使用filterRange,您可以使用两个基本过滤器并结束结果:

var paymentsByType = payments.dimension(function(d) { return d.type; }),
cashAndVisaPayments = Array.prototype.concat(paymentsByType.filter('cash').top(Infinity),paymentsByType.filter('visa').top(Infinity))