2014-04-30 76 views

回答

9

顯然,它確實存在:Array.prototype.every。從MDN 例子:

function isBigEnough(element, index, array) { 
    return (element >= 10); 
} 
var passed = [12, 5, 8, 130, 44].every(isBigEnough); 
// passed is false 
passed = [12, 54, 18, 130, 44].every(isBigEnough); 
// passed is true 

這意味着你將不必手動將其寫。不過,這個功能在IE8上不起作用。

但是,如果您想要一個也適用於IE8-的函數,則可以使用手動實現,即 Or the polyfill shown on the mdn page

手冊:

function all(array, condition){ 
    for(var i = 0; i < array.length; i++){ 
     if(!condition(array[i])){ 
      return false; 
     } 
    } 
    return true; 
} 

用法:

all([1, 2, 3, 4], function(e){return e < 3}) // false 
all([1, 2, 3, 4], function(e){return e > 0}) // true 
+0

@FlorianMargaine:哦DERP,我不知道這個問題的。將它添加到我的答案中,現在清理其餘的部分。 – Cerbrus

+3

值得一提的是:還有相反的情況:'Array.prototype.some',它檢查*任何*值是否通過測試。 –

相關問題