2012-06-16 15 views
6

¿Alguien tiene un enfoque para filtrar una dimensión de objeto crossfilter en valores múltiples? Algo así comoFiltro para múltiples valores discretos en filtro cruzado

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

o

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

... pero no la forma gama de ella ...

o

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

... pero sin la parte de compensación .

o un solución/enfoque equivalente no usar

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

??

¿O me está faltando algo en la API?

Gracias!

Larry

Respuesta

1

No parece haber nada en la API, pero si se quiere evitar filterRange, se podía a ella con dos filtros básicos y concating los resultados:

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

gracias, eso obtendrá los elementos combinados, pero desafortunadamente no proporcionará la dimensión multi-filtrada necesaria, que en mi caso es referenciada por varias vistas. aún puede tener que llevar su enfoque a una solución alternativa. aclamaciones. –

2
El

tras solicitud de extracción parece que sería hacer frente a sus necesidades, pero aún no se ha fusionado en.

Multiple arguments to filter result in union of filter operations

Una vez fusionado lo haría ser capaz de hacer algo como lo siguiente.

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

Lo que resultaría en la unión de todos los criterios de filtro.

+0

sí, obtuve el mismo puntero anterior del propio Capitán D3 (mbostock). Con suerte, la función llegará pronto. ¡Gracias! –

11

Me enfrentaba a un problema similar. La forma en que lo resolví fue que escribí una función de filtro que verificaría si la dimensión se encuentra en una matriz en particular o no.

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

Esto comprobará si el valor se encuentra en ese conjunto y lo filtrará en consecuencia.

Espero que esto ayude.

+0

Mi hombre. Lo pensé y tú lo dijiste. Buena solución. – Koba

+0

Gran solución.- @ pr – singh

+0

¡Gran solución! –

Cuestiones relacionadas