2016-06-15 8 views
0

_ unfilter()関数がどのようにして、unwindcorejsで動作するのかを理解できません。特に、私は、インデックスではなく、フィルタリングされているオブジェクトから値を返す方法があるかどうかを理解しようとしています。underscore.jsコンテキストを使用したフィルタ関数

は、次のことを想定します。標準的な実装で今

var A = [1,2,3,4,5,8,10,12,15,20,25,30]; 

_.filter(A, function(x) { return x % 5 == 0 ;}) 

をこれが[5,10,15,20,25,30]返します。

これは真値(5で割り切れるもの)のインデックスである[4,6]を返します。しかし、元の配列から真のインデックスの値を返すことを望んでいます。それは[5,10]です。

_.each()や_.map()などの他のunderscore.js関数を理解してから、これをコンテキストを使って呼び出す方法です。

_.map([0,1,2,3,4,5,6], function(x) { return this[x] % 5 == 0 ; }, A) 

[false、false、false、false、true、false、true]が返されます。私は、_.filter()が_each()を内部的に呼び出して配列を処理していることを理解しています。したがって、_.filter([0,1,2,3,4,5,6], function(x) { return this[x] % 5 == 0 ;}, A)の私の呼び出しは機能しません。つまり、_.each()コールはその機能の値this[x]を受け取っていないためです。

何かが見つからないか、値を返す_.filter()を呼び出す方法がありませんか?このような

+0

は、なぜあなたはこれを使用する必要がありますか?:? – JordanHendrix

+0

@JordanHendrix私はもっと情報を得ようとしています。 – Grr

+0

あなたの例は少し畳み込まれているので、_.filterの使用にこれらの配列のどの部分を使用する必要があるのか​​を知ることは困難です。アンダースコアの連鎖メカニズムを使用して、取得した結果をマップして値を返すことができます。http://underscorejs.org/#chain – kinakuta

答えて

2

Somethisngは

var indexes = [0,1,2,3,4,5,6]; 
_.filter(A, function(x, i) { 
    return x % 5 == 0 && indexes.indexOf(i) > -1; 
}); 

enter image description here

+0

便利な回避策。次善策かもしれません。 – Grr

関連する問題