2013-04-08 30 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