原⽣js源码之Array数组filter⽅法filter ⽅法创建⼀个新数组, 包含通过所提供函数实现的测试的所有元素。
语法:
var newArray = arr.filter(callback(item,index,thisArr))
说明:
callback:测试函数
item:当前元素
index:当前索引
thisArr:调⽤了 filter 的数组本⾝
newArray:返回的新数组,包含所有通过测试的元素。
实现代码:
var arr = [1,3,5,7,9]
Filter=function(callback){
//如果没有传⼊回调函数,则报错
if(!callback) throw new TypeError('undefined is not a function');
if (typeof callback !== 'function') {//传⼊的不是函数也报错
throw new TypeError(callback + " is not a function");
}
var res=[];//定义返回的新数组
for(var i=0,len=this.length;i<len;i++){
if(callback(this[i],i,this)){//如果函数的返回true,则将当前元素push到返回数组中。
res.push(this[i]);
}
}
typeof arrayreturn res;//返回新数组
}
var Filter(function(item,index,thisArr){
return item>0
});
console.log(res);
运⾏:
(5) [1, 3, 5, 7, 9]
因数组全部都⼤于0,所有返回了测试数组的所有元素组成的新数组。
将测试函数中 return item>0 改成 return item>5,看结果:
(2) [7, 9]
再改成 return item>10
[]
已经达到想要的效果,完成!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论