两个函数的组合
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<any>, 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
网友评论