我有一些json,例如:
data = {
"name":"Bob","age":"20",
"name":"Jo","age":"21",
"name":"Jo","age":"22",
"name":"Nick","age":"23"
}
接下来,我使用crossfilter,创建维度并过滤它:
let ndx = crossfilter(data);
let dim = ndx.dimension(d => d.name).filter(d !== "Jo");
//try to get filtered values
let filtered = dim.top(Infinity); // -> return 2 values where 'name'!='Jo'
//"name":"Bob","age":"20"
//"name":"Nick","age":"23"
let myGroup = dim.group(d => {
if(d === 'Jo') {
//Why we come here? This values must be filtered already
}
})
如何过滤我的维度,并且不会在&d9..gim'
上显示这些值?答案 0 :(得分:1)
不确定您使用的是哪个版本,但在current version of Crossfilter中,创建新组时,所有记录首先添加到组中,然后删除过滤后的记录。因此,对于所有记录,组访问者将至少运行一次。
为什么我们这样做?因为对于某些类型的分组逻辑,组对于“查看”范围内所有记录的完整图片非常重要。
无论如何,组访问器可能会运行所有记录(甚至是已过滤的记录)以构建组索引,但我不记得了。