2017-06-12 62 views
1

我有一些JSON,为examle:Crossfilter分组过滤键

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

如何过滤我的维和Don”在'dim.group'上有这些值吗?

回答

1

不知道您使用的是哪个版本,但是在current version of Crossfilter中,创建新组时,首先将所有记录添加到组中,然后删除已过滤的记录。因此,组访问者将为所有记录运行至少一次。

为什么我们要这样做?因为对于某些类型的分组逻辑,对于该组“查看”范围内的所有记录的完整图像是很重要的。

无论如何,为了构建组索引,组访问器可能会在所有记录(甚至是过滤的)上运行,但我不记得。