我想知道如何使用for循环自己编写Array.every()
函数。在我的例子中,for循环将为每次迭代打印5次。如果如果所有值都通过,我怎样才能使其返回true,如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)
}
答案 0 :(得分:1)
&#34;在我的示例中,for循环将为每次迭代返回true 5次。&#34;
没有它赢了,因为第一个return
语句立即返回而不迭代其余的项目。所以你真正实现的是.some()
method的简单版本,如果至少有一个项目符合条件,则返回true
。
如果您只是想要一个简单的for循环实现来测试每个项目是否与条件匹配,请反转测试逻辑并在找到 not 匹配的元素后立即返回false
。如果循环中的项没有通过测试,则循环将完成,因此返回true
算账:
for(i=0;i<array.length;i++){
if(!(array[i] < 6))
return false;
}
return true;
您可能希望了解.every()
的完整实施:MDN's .every()
polyfill