Crossfilter过滤和显示数组属性

时间:2013-04-08 20:38:29

标签: javascript 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/

1 个答案:

答案 0 :(得分:3)

在crossfilter-1.2.0中添加了

Support for custom filter functions。你现在应该能够做到:

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

并在那些上运行过滤器(但这只支持AND条件)。