以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
122. 实现 memoizeOne()
思路:定义一个变量存储上次调用的参数和结果,每次新参数传入时先进行比较是否相等,如果相等则直接返回上次的结果,否则重新计算结果并更新存储的参数和结果。
代码实现:
function memoizeOne(func, isEqual = (a, b) => a === b) { let lastArgs = null; let lastResult = null; return function (...args) { if (!lastArgs || !isEqual(args, lastArgs)) { lastArgs = args; lastResult = func.apply(this, args); } return lastResult; };}
其中isEqual
参数默认为判断两个值是否相等的===
操作符,如果有传入isEqual
参数则使用该参数判断是否相等。