2014-12-09 20 views
0

我有一個對象數組,目前我循環遍歷它們並逐個測試它們,但我試圖讓我的代碼更簡潔易懂。我想知道天氣有一種方法,用javascript或下劃線來測試數組中是否至少有一個項目返回true。測試數組中的任何項是否返回true?

for (var x = 0; x < user.apilog.length; x++) { 
    //test the conversion 
    if(conversions[i].conditional(user.apilog[x])){ 
     //run if true 
     break; 
    } 
    } 

回答

1

如果user.apilog是一個數組,那麼你可以使用Array.prototype.some()

var found = user.apilog.some(function (item, i) { 
    return conversions[i].conditional(item); 
}); 

注:強調還提供了一個some方法的工作原理幾乎相同的方式,同益,它應該在陣列狀物體工作,以及實際的數組:

var found = _.some(user.apilog, function (item, i) { 
    return conversions[i].conditional(item); 
}); 
+0

哇!太貼心了!我不需要IE8的支持,我敢打賭,這將比下劃線更好的性能! – Himmators 2014-12-09 13:31:18

+0

我以前不知道這件事,但是他能不能創建一個函數檢查(elem,index,arr),然後調用user.apilog.some(check)?編輯:假設函數檢查是否爲真 – brianforan 2014-12-09 13:32:44

+0

@pbrianq是的,單獨定義函數肯定會起作用。我在這裏使用了一個匿名函數,因爲它只是一個單行函數,將其定義爲一個單獨的函數可能會過度。 – JLRishe 2014-12-09 13:35:47

0

隨着underscore.js,你可以簡單地使用_.some(user.apilog)

相關問題