我正在使用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)。我知道我可以通过为我想要&&在一起的每个条件设置一个单独的维度来实现这一点,但这似乎非常浪费。有没有办法做到这一点,而不必求助于多个维度?
发布于 2016-09-07 21:58:03
不确定为什么这个提案被否决了。基本上,据我所知,这个时候的答案是“不”。但是,您不需要为每个条件创建新的维度-只需创建一个不属于数组类型的维度。类似于:
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);然后继续添加新的条件到你的过滤函数。
https://stackoverflow.com/questions/39360157
复制相似问题