lodash.memoize


_.memoize(func, [resolver])

創建一個會緩存 func 結果的函數。 如果提供了 resolver ,就用 resolver 的返回值作為 key 緩存函數的結果。 默認情況下用第一個參數作為緩存的 key。 func 在調用時 this 會綁定在緩存函數上。

注意: 緩存會暴露在緩存函數的 cache 上。 它是可以定制的,只要替換了 _.memoize.Cache 構造函數,或實現了 Map 的 delete, get, has, 和 set方法。

參數
 func (Function): 需要緩存化的函數.
 [resolver] (Function): 這個函數的返回值作為緩存的 key。

返回
 (Function): 返回緩存化后的函數。

舉例1: 獲取J(1000000)的值

const J = (n) => n === 0 ? 1 : J(n-1) + 1

如果直接調用J(1000000),會導致堆棧溢出,改用lodash中_.memoize, 記憶上一次函數結果

代碼:

const JJ = _.memoize((n) => n === 0 ? 1 : JJ(n - 1) + 1);
for (let i = 1; i <= 1000000; i++) {
  JJ(i);
}
console.log(JJ(1000000));

舉例2: 斐波那契數列F(1000)的值

const F = (n) => n < 2 ? 1 : F(n-1) + F(n-2)

同上例, 直接調用,會導致堆棧溢出,需要用_.memoize。
代碼:

const FF = _.memoize((n) => n < 2 ? 1 : FF(n - 1) + FF(n - 2));
for (let i = 1; i <= 1000; i++) {
  FF(i);
}
console.log(FF(1000));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM