compose 函数

两个函数的组合

const compose = (a , b) => c => a( b( c ) );

栗子:统计单词个数

分两步:
1、获取空格
2、获取长度

const splitIntoSpaces = str => str.split(' ');
const len = arr => arr.length;
const word = compose(len , splint); // 注意顺序
 word('saf dfadsf dfadf adfasdf');  //  输出4

强调注意顺序,不知道为什么的可以分别打印splitIntoSpaces 的str和len的arr就知道了

多个函数的组合

const reduce = (arr: Array, fn, value) => {
  arr.map(r => (value= fn(value, r)));
  return value;
};

const composeN = (...fns) => value =>reduce(fns.reverse(), (acc, fn) => fn(acc), value);

const splint = str => str.split(' ');
const len = arr => arr.length;
const word = composeN(len, splint);   //   注意顺序
const d = word('saf dfadsf dfadf adfasdf');   // 4

你可能感兴趣的:(compose 函数)