2013-04-08 38 views
3

我有数据对象的一个​​这样的数组:Crossfilter滤波和上显示阵列属性

{ 
    index: "M1", 
    first: "First", 
    last: "Last", 
    distance: 5, 
    specialties: ["Pediatrics", "Internal"], 
    languages: ["English", "French"] 
} 

除了过滤距离:

var cf = crossfilter(physicians); 
var byDistance = cf.dimension(function (d) { 
    return d.distance; 
}); 

我想通过专业进行过滤。我看过this question,但这只是给我一个结构,其中包含了整个数据集的每个专​​业的计数。

理想情况下,我想根据距离过滤器显示匹配的特色,并使用特色来进一步过滤结果。

这是可能给我的对象的结构?是否有一些更简单的方式来表示可以更好地进行过滤的数据?

谢谢。小提琴在这里:http://jsfiddle.net/colin_young/xRQjX/35/

回答

3

Support for custom filter functions已被添加到crossfilter-1.2.0中。您现在应该能够做到:

var specialties = cf.dimension(function(d) { 
    return d.specialties; 
}); 

specialties.filterFunction(function(d) { 
    return d.indexOf("specialty") >= 0; 
}); 

或者,你可以做一个尺寸为每个可能的特长:

var pediatrics = cf.dimension(function(d) { 
    return d.specialties.indexOf("pediatrics") >= 0; 
}); 

var internal = cf.dimension(function(d) { 
    return d.specialties.indexOf("internal") >= 0; 
}); 

和运行这些过滤器(但这只会支持和条件)。

+0

感谢您的回复。我一直忙得无法尝试,但我会尽全力在周末进行测试。 – 2013-04-12 18:17:37