前端面试题,利用函数柯里化,实现如下功能

// compose(f1, f2)(f3)(f4)([1, 2, 3]) => f4(f3(f2(f1([1,2,3]))))
//
function compose() {
    //todo
    const argArr = Array.from(arguments);

    return function fn(...args) {
        return fn.call(null,)
    }
}

function f1(args) {
    return args.map((a) => a * 1);
}

function f2(args) {
    return args.map((a) => a * 2);
}

function f3(args) {
    return args.map((a) => a * 3);
}

function f4(args) {
    return args.map((a) => a + 3);
}
求大佬赐教~~
全部评论
function compose() {     const argArr = Array.from(arguments);     return function fn(args){       if(typeof args === 'function&(15889)#39;){         argArr.push(args);         return fn;       }       let res = args;       argArr.map((item) => {         res = item(res);       });       return res;     } } 后面可以继续添加f5,f6,....,最开始也可以只是f1,算是比较通用吧
点赞 回复 分享
发布于 2021-12-13 22:48
以下是个人的见解,不知道算不算实现了,欢迎讨论: function compose() {   //todo   const argArr = Array.from(arguments); // 两个函数f1和f2   return function (arg1) {     argArr.push(arg1);  // f3     return function (arg2) {       argArr.push(arg2);  // f4       return argArr.reduce((pre, cur) => (args) => cur(pre(args)));     };   }; } 验证:
点赞 回复 分享
发布于 2021-10-17 19:10

相关推荐

06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务