AND过滤过滤器数组维度

时间:2016-09-07 01:54:49

标签: javascript crossfilter

我正在使用new array dimensions in Crossfilter,我在尝试制作一个只选择包含多个数组值的行的过滤器时遇到了麻烦。使用自定义过滤器函数制作一个在数组值上选择联合的过滤器非常容易:

var ndx = crossfilter([
    {arrayVals: [1, 2]},
    {arrayVals: [2, 3]},
    {arrayVals: [1, 2, 3]}
]);
var arrayDim = ndx.dimension(function(d) {return d.arrayVals;}, true);
arrayDim.filter(function(d) {return d == 1 || d == 3;}).top(Infinity);

但是我真的想过滤多个条件的交集(例如d == 1 && d == 3)。我知道我可以通过为我想要&&的每个条件设置一个单独的维度来实现这一点,但这似乎非常浪费。有没有办法做到这一点,而不必诉诸多个维度?

1 个答案:

答案 0 :(得分:2)

不确定为什么这会被低估。基本上,据我所知,此时的答案是“#34; no"”。但是,您不需要为每个条件创建一个新维度 - 只需要一个不属于数组类型的维度。类似的东西:

var arrayDim2 = ndx.dimension(function(d) {return d.arrayVals;});
arrayDim2.filter(function(d) { return d.indexOf(1) !== -1 && d.indexOf(3) !== -1;});
arrayDim2.top(Infinity);

然后继续为过滤器功能添加新的条件。