2016-09-25 108 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