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 に答える