every
方法测试一个数组内的所有元素是否都能通过某个指定函数的测试,全部通过测试就返回true,一旦有一个元素不通过测试则立马返回false。
下面自己实现一个every
var arr = [1,3,5,7,9]
Array.prototype.myEvery=function(callback){
//如果没有传入回调函数,则报错
if(!callback) throw new TypeError('undefined is not a function');
if (typeof callback !== 'function') {//传入的不是函数也报错
throw new TypeError(callback + " is not a function");
}
for(var i=0,len=this.length;i<len;i++){
if(!callback(this[i],i,this)){//如果回调函数的返回值为false ,则终止循环,返回false
return false;
}
}
return true;//最终没有匹配到就返回true
}
var res=arr.myEvery(function(item,index,thisArr){
console.log(item,index,thisArr);
return item>1
});
console.log(res);
结果:
1 0 (5) [1, 3, 5, 7, 9]
false
将函数里面的 return item>1 改成 return item>0 再执行一下。
var arr = [1,3,5,7,9]
Array.prototype.myEvery=function(callback){
//如果没有传入回调函数,则报错
if(!callback) throw new TypeError('undefined is not a function');
if (typeof callback !== 'function') {//传入的不是函数也报错
throw new TypeError(callback + " is not a function");
}
for(var i=0,len=this.length;i<len;i++){
if(!callback(this[i],i,this)){//如果回调函数的返回值为false ,则终止循环,返回false
return false;
}
}
return true;//最终没有匹配到就返回true
}
var res=arr.myEvery(function(item,index,thisArr){
return item>0
});
console.log(res);
输出:
true
就当前实例来讲只有数组的全部元素都大于0的情况下才返回true;否则一遇到不通过的就立马停止执行并返回false。