2012-06-16 22 views
6

Qualcuno ha un approccio per filtrare una dimensione oggetto crossfilter su più valori? Qualcosa di simileFiltro per più valori discreti nel filtro incrociato

.filterExact(["cash","visa"]) 

o

.filter(["cash","visa"]) 

... ma non la forma gamma di esso ...

o

.filterAll(["cash","visa"]) 

... ma senza la parte di compensazione .

o soluzione/approccio equivalente non utilizza

.filterRange(["cash","visa"]) 

??

O mi manca qualcosa nell'API?

Grazie!

Larry

risposta

1

non sembra essere nulla nel API, ma se si vuole evitare filterRange, si potrebbe ad esso con due filtri di base e concating risultati:

var paymentsByType = payments.dimension(function(d) { return d.type; }), 
cashAndVisaPayments = Array.prototype.concat(paymentsByType.filter('cash').top(Infinity),paymentsByType.filter('visa').top(Infinity)) 
+0

grazie, otterrà gli elementi uniti, ma sfortunatamente non fornirà la dimensione multi-filtro necessaria, che nel mio caso è referenziata da più viste. potrebbe ancora dover prendere il tuo approccio a una soluzione alternativa. Saluti. –

2

Il a seguito della richiesta di pull sembra che sarebbe soddisfare le vostre esigenze, ma non è ancora stata fusa in.

Multiple arguments to filter result in union of filter operations

Una volta unite si farebbe essere in grado di fare qualcosa come il seguente

data.total.filter("cash", "visa"); 

Quale risulterebbe nell'unione di tutti i criteri di filtro.

+0

sì, ha ottenuto lo stesso puntatore in precedenza dal capitano D3 stesso (mbostock). Speriamo che la funzione atterrerà presto. Grazie! –

11

Mi trovavo di fronte a un problema simile. Il modo in cui ho risolto il problema è stato che ho scritto una funzione di filtro per verificare se la dimensione si trova in un particolare array o meno.

// Array of things you want to filter 
var f = ["cash", "visa"]; 
// Assuming "dim" is our dimension 
dim.filter(function(d){ 
    return f.indexOf(d) > -1; 
}); 

Verificherà se il valore si trova in quell'array e filtra di conseguenza.

Spero che questo aiuti.

+0

Il mio uomo. Lo penso e tu l'hai detto. Buona soluzione – Koba

+0

Ottima soluzione.- @ pr – singh

+0

Ottima soluzione! –

Problemi correlati