我無法理解_.filter()函數如何工作在不合意的情況下。具體來說,我想了解是否有一種方法可以從被過濾的對象(而不是索引)中返回值。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]。我的問題如下:
_.filter([0,1,2,3,4,5,6], function(x) { return this[x] % 5 == 0 ;}, A)
這會返回真值(可被5整除的)的索引[4,6]。但我想返回原始數組中真實指數的值,即[5,10]。
從我對其他underscore.js函數(如_.each()和_.map())的理解中,我將如何使用上下文來調用函數。
_.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(),它會返回值?
你爲什麼要使用它? – JordanHendrix
@JordanHendrix我只是想更好地通知。 – Grr
您的示例有點複雜,因此很難判斷在使用_.filter時需要使用這些數組的哪一部分。你可以使用下劃線的鏈接機制,然後映射你得到的結果並返回值:http://underscorejs.org/#chain – kinakuta