1、函数组合
函数组合:如果一个函数要经过多个函数处理才能得到最终值,这个时候可以把中间过程的函数合并成一个函数;
函数就像是数据的管道,函数组合就是把这些管道连接起来,让数据穿过多个管道形成最终结果;
函数组合默认是从右到左执行
function compose(f, g){ return function(value){ return f(g(value)) } } function reverse(array){ return array.reverse() } function first(array){ return _.first(array) } const last = compose(first,reverse) console.log(last([1,2,3,4]))2、lodash组合函数
// lodash 中的函数组合方法 _.flowRight() const reverse = arr => arr.reverse(); const first = arr => _.first(arr); const toUpper = s => s.toUpperCase(); const result = _.flowRight(toUpper,first,reverse); console.log(result(['a','b','d','e']))3、函数组合-结合律
const r = _.flowRight(_.flowRight(_.toUpper,_.first),_.reverse) console.log(r(['a','b','d','e']))4、函数组合-调试
const msg = _.curry((tag,v) => { console.log(tag,v); return v; }) const f = _.flowRight(_.toUpper,_.first,msg('reverse之后'),_.reverse); f(['a','b','d','e'])5、lodash-fp模块
lodash-fp传参是先写条件,后传值(例如:数组)
lodash是被柯里化过的,所以传一个参数的时候,会返回一个函数等待传其他的参数
const fp = require('lodash/fp'); const fpMap = fp.map(fp.toUpper,['a','b','c','d']); console.log(fpMap); const fpSplit = fp.split(' ','Hello World'); console.log(fpSplit);