2012-06-16 5 views
6

Hat jemand einen Ansatz zum Filtern einer crossfilter Objektdimension auf mehreren Werten? So etwas wieFilter für mehrere diskrete Werte im Crossfilter

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

oder

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

... aber nicht die Reichweite Form davon ...

oder

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

... aber ohne das Clearing Teil .

oder eine äquivalente Behelfslösung/Ansatz nicht

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

??

Oder fehlt mir etwas in der API?

Danke!

Larry

Antwort

1

Es scheint nicht, etwas in der API zu sein, aber wenn man filterRange vermeiden wollen, können Sie es mit zwei Basisfilter und concating um die Ergebnisse könnten:

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

danke, das wird die fusionierten Elemente erhalten, aber leider nicht die erforderliche multi-gefilterte Dimension, die in meinem Fall durch mehrere Ansichten verwiesen wird. Möglicherweise müssen Sie Ihren Ansatz jedoch zu einem Workaround bringen. Prost. –

2

Die folgende Pull-Anforderung sieht aus wie wäre es Ihre Bedürfnisse eingehen, aber es hat sich in noch nicht verschmolzen.

Multiple arguments to filter result in union of filter operations

Sobald verschmolzen würden Sie in der Lage sein, etwas wie das Folgende zu tun.

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

Dies würde zur Vereinigung aller Filterkriterien führen.

+0

yep, habe den gleichen Zeiger früher von Captain D3 selbst (mobostock). Hoffentlich wird das Feature bald landen. Vielen Dank! –

11

Ich hatte ein ähnliches Problem. Die Art, wie ich es gelöst habe, war, dass ich eine Filterfunktion geschrieben habe, die überprüft, ob die Dimension in einem bestimmten Array liegt oder nicht.

Dies wird prüfen, ob der Wert in diesem Array liegt und entsprechend filtern.

Hoffe, das hilft.

+0

Mein Mann. Ich habe es und du hast es gesagt. Gute Lösung. – Koba

+0

Große Lösung.- @ pr – singh

+0

Große Lösung! –