JavaScript 手写数组filter方法

如何手写一个数组的filter筛选器的方法?

首先看看filter这个API都有什么参数
在这里插入图片描述

可以看到有两个参数:“回调函数” 和 “this”;
回调函数中有三个参数:1.当前值;2.索引值;3.使用该方法的数组。

Array.prototype.myFilter = function(fn,thisValue){
	if(Object.prototype.toString.call(fn) !== "[object Function]"){		//判断传入的参数fn是否为函数
		throw new Error("fn is not a function")
	}
	let result = []		//用来存放符合筛选条件的元素
	let curArray = this	//代表调用该方法的数组
	for(var i = 0;i < curArray.length;i++){
		//通过call方法将fn的this绑定到thisValue上,
		//再把函数所需要的参数依次传入,
		//如果回调函数执行的结果为true,则进入if判断,将符合条件的元素添加至result中
		if(fn.call(thisValue,curArray[i],i,curArray) ){
			result.push(curArray[i])
		}
	}
	return result  //遍历完毕,返回result
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值