【前端】函数抽象化和数组的操作

我们通过部分应用和函数柯里化来实现输入从抽象到具体,那今天我们来看看如何将方法从具体到抽象,如何实现函数的组合

组合

接下来我们要实现输入出除以二,并判断他是否等于一,我们即要保证函数的单一职责也要确保功能的实现

var isODD=(x)=>equalsToOne(remainderOfTwo(x));

var remainderOFTwo=dividedBy(2)
var equalsToOne=equalsTo(1)

var dividedBy=(x){
  return funcation(x){
  
    return x % y
   }
}

var equalsTo=(y){
 
  return function(x){

      return x===y
  }
}

这里我们了解到函数是可以组合使用的,这里我们调用的时候甚至无需传参,就可以实现功能,这也是JS的声明式

管道Pipeline

函数式编程中的管道,是另外一种函数的创建方式,这样创建出来的函数的特点就是上一个方法的结果会作为下一个方法的输入,然后按照顺序执行 Unix和linux也有类似的管道思想

Transduction

函数式编程中的很多概念都来自相对于复杂,动力系统研究与控制等领域,而通过组合和管道,我们再延申一下转导 transducing
转导主要用于控制系统,比如声波作为输入,通过麦克风进入到一个功放,然后功放进行能量转换,最后通过喇叭传出声音的这样一个系统,就可以成为转导
这个概念被用于react.js中的reducer,他最主要解决的是在大型数组,进行多次map,filter。reduce的性能问题,使得输入的数组只被处理一次,直接输出结果,而不需要中间数组

这样的代码会产生一系列的中间数组

Map,Filter,Reduce

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值