实现一个如 f1(f2(f3(f4(x)))) 的 compose

Posted NsNe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现一个如 f1(f2(f3(f4(x)))) 的 compose相关的知识,希望对你有一定的参考价值。

假设有函数

[f1, f2, f3, f4]

f1(f2(f3(f4(x))))

function compose(...funcs) {
  if(funcs.length === 0) {
    return args => args;
  }
  return funcs.reduce((acc, current) => {
    return (...args) => acc(current(...args));
  });
}

f4(f3(f2(f1(x))))

function compose(...funcs) {
  if(funcs.length === 0) {
    return args => args;
  }
  return funcs.reduce((acc, current) => {
    return (...args) => current(acc(...args));
  });
}

经典题型测试

function add(a, b = 1) {
  return a + b;  
}
 
function square(a) {
  return a*a;
}
 
function plusOne(a) {
  return a + 1;
}
 
function compose(...funcs) {
  if(funcs.length === 0) {
    return args => args;
  }
  return funcs.reduce((acc, current) => {
    return (...args) => acc(current(...args));
  });
}
 
var addSquareAndPlusOne = compose(add, square, plusOne);
 
addSquareAndPlusOne(1, 2);

以上是关于实现一个如 f1(f2(f3(f4(x)))) 的 compose的主要内容,如果未能解决你的问题,请参考以下文章

stm32f4为啥没人用

Apache Pig:加入后展平列名

update set 按条件更新不同字段

shell之列表的定义与循环

如何迭代函数列表

java实现对树形结构(文件夹式)数据数组进行排序