js-记忆函数

loading 2023年12月14日 281次浏览

力扣链接

实现一个具有记忆功能的函数,当输入相同时直接返回结果而不用重新进行计算:

利用闭包实现

function memorize(fn) {
    let map = new Map();
    return function (...args) {
        if(map.has(args.join('-'))) return map.get(args.join('-'));
        let res = fn(...args);
        if(!map.has(args.join('-'))) map.set(args.join('-'), res);
        return res;
    }
}


/** 
 * let callCount = 0;
 * const memorizedFn = memorize(function (a, b) {
 *	 callCount += 1;
 *   return a + b;
 * })
 * memorizedFn(2, 3) // 5
 * memorizedFn(2, 3) // 5
 * console.log(callCount) // 1 
 */