2012-06-16 5 views
6

crossfilterオブジェクトディメンションを複数の値でフィルタリングする方法はありますか?クロスフィルタで複数​​の離散値をフィルタリングする

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

または

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

...ではなく、それの範囲の形のようなもの...

または

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

...しかし、クリアパーツなし。

または同等の回避策/アプローチ

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

を使用していません?

また、APIに何か不足していますか?

ありがとうございます!

ラリー

答えて

1

ありAPIには何もしていないようですが、あなたはfilterRangeを避けたい場合は、次の2つの基本的なフィルタでそれをするために、結果をconcatingできます

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

ありがとう、それはマージされた要素を取得しますが、私の場合は複数のビューによって参照される必要な複数のフィルタリングされたディメンションを残念ながら提供しません。回避策にアプローチする必要があります。乾杯。 –

2

以下のプル要求は、それはあなたのニーズに応えるだろうように見えますが、それはまだでマージされていない。

Multiple arguments to filter result in union of filter operations

一度あなたが希望合併しました次のようなことをすることができます。

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

これは、すべてのフィルタ条件の和集合になります。

+0

うん、Captain D3自身(mbostock)から同じポインタを先に受け取った。うまくいけば、その機能はすぐに着陸することを願っているありがとう! –

11

私は同様の問題に直面していました。私がそれを解決する方法は、次元が特定の配列にあるかどうかをチェックするフィルタ関数を書いたことです。

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

これは、その値がその配列に含まれているかどうか、それに応じてフィルタリングするかどうかをチェックします。

これが役に立ちます。

+0

私の人。私はそれとあなたがそれを言ったが。良い解決策。 – Koba

+0

素晴らしい解決策.- @ pr – singh

+0

すばらしい解決策! –

関連する問題