memoize-function
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

memoize-function

Lint Check Test Check Production Build Typecheck Check

In computing, memoization is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again. — Wikipedia

A memoization library that caches all results and supports N arguments with any type.

Installation

npm install memoize-function --save

Usage

const memoizeFunction = require("memoize-function");

const factorial = memoizeFunction((value) => {
  if (value <= 1) {
    return 1;
  }

  return value * factorial(value - 1);
});

factorial(50);
factorial(20); // Value from cache

Custom storage

It is possible to pass a custom storage to be used.

const memoized = memoizeFunction(fn, {
  storage: {
    store: {},
    clear() {
      this.store = {};
    },
    remove(key) {
      delete this.store[key];
    },
    set(key, value) {
      this.store[key] = value;
    },
    get(key) {
      return this.store[key] || null;
    },
  },
});
class Storage {
  store;

  constructor() {
    this.store = {};
  }

  clear() {
    this.store = {};
  }

  remove(key) {
    delete this.store[key];
  }

  get(key) {
    return this.store[key] || null;
  }

  set(key, value) {
    this.store[key] = value;
  }
}

const memoized = memoizeFunction(fn, {
  storage: new Storage(),
});

The custom cache can be a class or an object implementing the following methods:

  • get
  • set
  • clear
  • remove

Custom cache key generator

To use a custom cache key generator:

const generateCacheKey = (...args) =>
  "my_custom_key_for_each_function_argument";

const memoized = memoizeFunction(fn, {
  generateCacheKey,
});

Package Sidebar

Install

npm i memoize-function

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

34.2 kB

Total Files

49

Last publish

Collaborators

  • playerony