fp : Functional Programming 函数式程序设计
- fp模块提供了实用的对函数式编程友好的方法
- 提供了不可变 auto-aurried iteratee-first data-last 的方法(自动柯里化、函数优先、数据置后)
// _lodash 的 _.map 和 _.split 数据优先 函数置后
const arr = _.map(['a','b','c'],_.toLower);
console.log(arr)
// [ 'a', 'b', 'c' ]
const arr1 = _.map(['a','b','c'])
console.log(arr1)
// [ 'a', 'b', 'c' ] 没有第二个参数 会返回原数组
const arr2 = _.split('hello world', ' ')
console.log(arr2)
// [ 'hello', 'world' ]
// lodash 中的 fp 模块 从调用方法上可以看出来 函数优先 数据置后
const fp = require('lodash/fp');
const fpArr = fp.map(_.toLower,['e','f','g']);
console.log(fpArr)
// [ 'e', 'f', 'g' ]
const fpArr1 = fp.map(_.toLower)(['e','f','g']);
console.log(fpArr1)
// [ 'e', 'f', 'g' ]
// 从 fpArr 和 fpArr1 可以看出 fp.map方法 是被柯里化后的方法
const fpSplit = fp.split(' ', 'nice to meet you');
console.log(fpSplit)
// [ 'nice', 'to', 'meet', 'you' ]
const fpSplit2 = fp.split(' ')('nice to meet you');
console.log(fpSplit2)
// [ 'nice', 'to', 'meet', 'you' ]
fp 模块的运用
使用lodash 中的 fp 模块 实现 将 ‘NEVER SAY DIE’ 转换成 ‘never-say-die’
const format = fp.flowRight(fp.join('-'),fp.split(','),fp.toLower,fp.split(' '));
const result = format('NEVER SAY DIE');
console.log(result)
// never-say-die
const format2 = fp.flowRight(fp.join('-'),fp.map(fp.toLower),fp.split(' '));
const result2 = format2('NEVER SAY DIE');
console.log(result2);
// never-say-die