函数式编程

函数式编程:把函数作为一个参数,在函数内部去使用这个参数,例如map、filter、forEach等等
函数式编程好处:编程代码更少,减少代码的出错率,增加代码的复用率,编程逻辑更清晰,编程效率较高

高阶函数

为什么要使用高阶函数
我们将一个功能添加到另一个功能中,用许多小功能组成一个大功能,因为分开思考和推理并调试这些问题,比两者要容易得多,而不是解决方案全混杂在一起,就像for循环一样。
例如:高阶函数的filter和普通函数同样解决一个问题,filter更清晰,代码复用性更强,而普通代码较多,如果我们在一个数组中筛选狗,我们就用命令式代码巴拉巴拉写完了,要是在另一个需求里面还要筛选猫呢?那意味着相同的代码,我们还要写一次,但是代码逻辑其实改变很小。
使用filter和使用普通函数的区别

JS中filter函数内部实现

Array.prototype.wkyFilter = function (fn, context) {
    if (!(fn instanceof Function)) {
        throw new TypeError(`${fn} is not a function`)
    }

    let temp = []
    let arr = this // 得到需要filter的数组
    let len = this.length

    for (let i = 0; i < len; i++) {
        let res = fn.call(context, arr[i], i, arr) // 执行用户传入filter的回调函数
        if (res) {
            temp.push(arr[i])
        }
    }
    return temp // 返回filter处理的结果
}

let arr = [1, 4, 7, 8, 2]

const res = arr.wkyFilter((item, index, arr) => {
    console.log(index, arr) 
    //0 [ 1, 4, 7, 8, 2 ];  1 [ 1, 4, 7, 8, 2 ]; 2 [ 1, 4, 7, 8, 2 ];  3 [ 1, 4, 7, 8, 2 ] ; 4 [ 1, 4, 7, 8, 2 ]
    return item > 3
})

console.log(res) // [ 4, 7, 8 ]
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值