2016-09-25 116 views
0

我想知道如何使用for循環自己編寫Array.every()函數。在我的例子中,for循環每次迭代將打印5次。我如何才能讓它返回真正的一次如果所有的值都通過了,就像Array.every()函數一樣?編寫Array.every()函數

var array = [1,2,3,4,5]; 

console.log(array.every(function(num){return num < 6})) 

// the for loop will return true 5 times 
for(i=0;i<array.length;i++){ 
    if(array[i] < 6) 
    console.log(true) 
} 
+3

正確實施 - HTTPS ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every#Polyfill –

+0

好的,我明白了。謝謝。 – mattHunting10

回答

1

「在我的例子for循環將返回true 5次,每次迭代。」

沒有也不會,因爲第一個return聲明立即返回,而不遍歷項目的其餘部分。因此,您實施的是.some() method的簡單版本,如果至少有一個項目符合條件,則返回true

如果你只是想要一個簡單的for循環實現,測試,每一個項目的條件匹配,扭轉測試邏輯,並儘快返回false你發現確實匹配的元素。如果在循環中沒有項目測試失敗,則循環將完全,所以返回true 算賬:

for(i=0;i<array.length;i++){ 
    if(!(array[i] < 6)) 
    return false; 
} 
return true; 

你可能想看看一個全面實施的.every()MDN's .every() polyfill

+0

是的,我的意思是說如果我console.log()它會打印出5次。這是我需要感謝你。 – mattHunting10