提出问题
有数组如下:
let arr = [1,2,3,10,20,100,500]
定义函数,可以实现过滤功能,比如:
- 打印出数组中的偶数
- 打印出大于
3的值 - 打印出小于
10的值
分析
如果按照传统方式定义3个函数:
- 第一个函数:打印出数组中的偶数
- 第二个函数:只能打印大于
3的值 - 第三个函数:只能打印出小于
10的值
显然太笨了,如下:
let arr = [1,2,3,10,20,100,500]
function fun1(arr){
for( let item of arr){
if(item % 2 == 0){
console.log(item)
}
}
}
fun1(arr)
解决
可以使用回调函数
定义主函数
形参:
- 参数1:数组
- 参数2:回调函数,该回调函数是对数组进行的操作
功能:遍历数组,并执行回调函数,将数组的元素传给该回调函数,如果该函数返回 true,表示符合条件,就打印该元素
function fun(arr,callback){
for( let item of arr){
let res = callback(item)
if(res){
console.log(item)
}
}
}
定义回调函数
形参:数组的一个元素
功能:定义过滤规则,即:能被 2 整除就打印,如下:
function callback(e){
return e % 2 == 0
}
调用函数:
fun(arr , callback)
改写上面回调函数为 箭头函数
调用函数时,传入箭头函数:
fun(arr , (e) => {
return e % 2 == 0
})
简化上面的箭头函数
调用函数时,传入箭头函数:
fun(arr , (e) => e % 2 == 0 )
总结
箭头函数 作为回调函数,可以 简化 定义过滤规则