gpt4 book ai didi

javascript - 如何过滤 dc/crossfilter 维度中的多个值?

转载 作者:行者123 更新时间:2023-12-03 07:17:46 24 4
gpt4 key购买 nike

假设我有这个数据和维度:

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;
});

...现在,我只想使用代码过滤“apple”、“lemon”和“orange”。到目前为止,我正在尝试做类似的事情。

fruitDimension.filter(["apple","lemon","orange"])

...但它并不能解决所有问题。

  • 我知道函数#dimension.filterExact(value) 对一个值有效。

    • 如果我应用 # dimension.filter(value) 将向量作为参数传递,它会将其处理为 # dimension.filterRange(range)

    • 我找不到哪个过滤器适用于不同的值。

引用资料来自:https://github.com/square/crossfilter/wiki/API-Reference

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

提前致谢,罗杰

最佳答案

为此,Crossfilter 需要自定义过滤器功能。 dc.js 提供了一个。

应用于 dc.js 图表

如果您使用的是 dc 图表,您应该通过图表的 filter 函数应用过滤器,该函数与 crossfilter 维度过滤器具有不同的语法和语义:

chart.filter([["apple","lemon","orange"]]);

注意额外的一组括号。很奇怪吧?我不知道它是如何进化成这样的。此外,dc 将切换每个值,因此如果您想替换过滤器,请使用 replaceFilter 而不是 filter

这记录在 filterHandler function 中,这是 dc.js 将过滤器应用到 crossfilter 的地方。

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

直接用crossfilter

如果您想将多值过滤器直接应用于交叉过滤器维度,这里有一个函数可以为值数组生成过滤器函数:

function multivalue_filter(values) {
return function(v) {
return values.indexOf(v) !== -1;
};
}
fruitDimension.filterFunction(multivalue_filter(["apple","lemon","orange"]));

关于javascript - 如何过滤 dc/crossfilter 维度中的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38920359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com