首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤dc/交叉过滤器维度中的多个值?

问如何过滤dc/交叉过滤器维度中的多个值?
EN

Stack Overflow用户
提问于 2016-08-12 14:25:59
回答 1查看 3.9K关注 0票数 2

让我说,我有这些数据和维度:

代码语言:javascript
复制
var data = [
      {"fruit": "apple", "amount": "12"},
      {"fruit": "orange", "amount": "6"},
      {"fruit": "grape", "amount": "11"},
      {"fruit": "melon", "amount": "26"},
      {"fruit": "lemon", "amount": "15"}
    ]

var ndx = crossfilter(data);
var fruitDimension = ndx.dimension(function (d) {
                            return d.fruit;
                        });

现在,我只想用代码过滤“苹果”、“柠檬”和“橙色”。到现在为止,我正试图做一些类似的事情。

代码语言:javascript
复制
fruitDimension.filter(["apple","lemon","orange"])

...but --它并不能全部工作。

  • 我知道函数# dimension.filterExact(value)只适用于一个值。
代码语言:javascript
复制
- If I apply # **dimension.filter(value)** passing a vector as parameter, it deals with it as # dimension.filterRange(range)
- I could not find which filter works for different values. 

​

参考资料:https://github.com/square/crossfilter/wiki/API-Reference

有人暗示我可以做些什么来过滤维度的不同元素(不遵循范围顺序)?

谢谢你,罗杰

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 14:46:15

为此,交叉筛选器需要自定义筛选器函数。dc.js提供了一个。

应用于dc.js图表

如果您使用的是dc图,则应该通过图表的filter函数应用过滤器,该函数的语法和语义与交叉过滤器维度筛选器不同:

代码语言:javascript
复制
chart.filter([["apple","lemon","orange"]]);

注意额外的一组括号。怪怪的对吧?我不知道它是怎么演变成这样的。另外,dc将切换每个值,因此如果要替换筛选器,请使用replaceFilter而不是filter。

这在 function中有记录,dc.js将过滤器应用于交叉过滤器。

图表不知道对交叉过滤器维度的直接更改:如果您使用图表的.filter(),则图表将更新可视化选择。

直接用交叉滤波器

如果要将多值筛选器直接应用于交叉筛选器维度,下面是为值数组生成筛选函数的函数:

代码语言:javascript
复制
function multivalue_filter(values) {
    return function(v) {
        return values.indexOf(v) !== -1;
    };
}
fruitDimension.filterFunction(multivalue_filter(["apple","lemon","orange"]));
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38920359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档