先写一个栗子 : 将字符串 “NEREV SAY DIE” 转换成 “never-say-die”

    1. // 观察案例题目 解题思路 : 先将字符串用‘ ’分割 -> 转小写 -> 用‘-’组合
    2. const _ = require('lodash');
    3. // _.split(str , sep) 需要两个参数 sep: 分隔符 ; str: 处理的字符串
    4. // 但是组合函数,只能是一个数据流, 所以需要处理_.join
    5. const mySplit = _.curry((sep, str) => _.split(str, sep));
    6. // _.toLower 只需要一个参数
    7. // _.join(array , sep) 也需要两个参数 sep: 合并符 ; str: 处理的字符串 所以需要处理
    8. const myJoin = _.curry((sep, array) => _.join(array, sep));
    9. const formatFn = _.flowRight(myJoin('-'), _.toLower, mySplit(' '));
    10. console.log(formatFn('NEVER SAY DIE'))
    11. // 运行结果 n-e-v-e-r-,-s-a-y-,-d-i-e
    12. // 很明显 上面的运行结果并不是我们想要的,那是哪里的问题?
    13. // 这时候 需要写一个调试函数
    14. // 根据组合函数的特点: mySplist 执行结束之后,会把结果传递给 toLower
    15. // 所以可以在 mySplit 和 toLower之间添加log函数
    16. const logFn = value => {
    17. console.log(value);
    18. return value;
    19. }
    20. const handleFnLog = _.flowRight(myJoin('-') , _.toLower , logFn , mySplit(' '));
    21. console.log(handleFnLog("NEVER SAY DIE"));
    22. // 运行结果
    23. // [ 'NEVER', 'SAY', 'DIE' ]
    24. // n-e-v-e-r-,-s-a-y-,-d-i-e
    25. // 继续调试
    26. const handleFnLog2 = _.flowRight(myJoin('-') , logFn , _.toLower , logFn , mySplit(' '));
    27. console.log(handleFnLog2("NEVER SAY DIE"));
    28. // 运行结果
    29. // [ 'NEVER', 'SAY', 'DIE' ]
    30. // never,say,die
    31. // n-e-v-e-r-,-s-a-y-,-d-i-e
    32. // => 直到找到问题所在 myJoin之前出了问题
    33. const format = _.flowRight(myJoin('-') ,mySplit(','), logFn , _.toLower , logFn , mySplit(' '));
    34. console.log(format("NEVER SAY DIE"));
    35. // 运行结果
    36. // [ 'NEVER', 'SAY', 'DIE' ]
    37. // never,say,die
    38. // never-say-die