记忆函数题解

题目链接:

2623. 记忆函数 - 力扣(LeetCode)

思路:

构建一个 map 存储调用结果,args 本身是一个数组,数组是复杂数据类型,每次调用,如果作为 map 的 key 去存储,会导致存储的key不一样,所以我们需要给他转换成 字符串类型,调用 数组的 toString 变成 字符串存储下来即可

代码:

javascript 复制代码
/**
 * @param {Function} fn
 * @return {Function}
 */
function memoize(fn) {
    let cache = new Map()
    return function (...args) {
        console.log(args)
        if (!cache.has(args.toString())) cache.set(args.toString(), fn.apply(this, args))
        return cache.get(args.toString())
    }
}


/** 
 * let callCount = 0;
 * const memoizedFn = memoize(function (a, b) {
 *	 callCount += 1;
 *   return a + b;
 * })
 * memoizedFn(2, 3) // 5
 * memoizedFn(2, 3) // 5
 * console.log(callCount) // 1 
 */
相关推荐
Penge66616 小时前
《Go 后端开发者学 TypeScript:数组和元组》
javascript
Penge66617 小时前
《Go 后端开发者学 TypeScript:export关键字大全》
javascript
Penge66617 小时前
《Go 后端开发者学 TypeScript:从零理解 async、await 与 Promise》
javascript
Penge66617 小时前
typescript 中const用法
javascript
来让爷抱一个19 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
心祭丫丫1 天前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
露天赏雪1 天前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
yeccheng1 天前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀1 天前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
zjxtxdy1 天前
C++面向对象程序开发-类与对象
开发语言·c++