请教一道关于柯里化面试题

来源:1-1 课程介绍

慕先生5461412

2021-10-15

问下老师,请问这样写合适吗?是否还有改进空间?

// 要求实现这样的效果 compose(f1, f2)(f3)(f4)([1, 2, 3]) => f4(f3(f2(f1([1,2,3]))))
//
function compose(...args) {
    //这个是我自己写的
    return (...rest) => {
        if (rest.length === 1 && rest[0] instanceof Array) {
            let res = rest[0];
            for (let fn of args) {
                res = fn.call(null, res);
            }
            return res;
        } else {
            let _allArgs = [...args, ...rest];
            return compose(..._allArgs);
        }
    }
}

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);
}

const res = f4(f3(f2(f1([1, 2, 3]))));
const conRes = compose(f1, f2)(f3)(f4)([1, 2, 3]);
console.log(res);
console.log(conRes);
写回答

1回答

lewis

2021-10-15

请问一些与课程相关的问题哈

0
0

JavaScript版数据结构与算法 轻松解决前端算法面试

夯实算法基础,填补技术短板,助力面试考题最后一公里

2479 学习 · 683 问题

查看课程