3

我有一个这样的数据对象数组:

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

我想按专业过滤。我看过这个问题,但这只是给了我一个结构,其中包含整个数据集的每个专​​业的计数。

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

考虑到我的对象的结构,这可能吗?是否有一些更简单的方法来表示更适合过滤的数据?

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

4

1 回答 1

3

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

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

于 2013-04-11T04:12:21.803 回答