UNPKG

mathjs

Version:

Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.

32 lines (28 loc) 1 kB
// function utils /* * Memoize a given function by caching the computed result. * The cache of a memoized function can be cleared by deleting the `cache` * property of the function. * * @param {function} fn The function to be memoized. * Must be a pure function. * @param {function(args: Array)} [hasher] A custom hash builder. * Is JSON.stringify by default. * @return {function} Returns the memoized function */ exports.memoize = function(fn, hasher) { return function memoize() { if (typeof memoize.cache !== 'object') { memoize.cache = {}; } var args = []; for (var i = 0; i < arguments.length; i++) { args[i] = arguments[i]; } var hash = hasher ? hasher(args) : JSON.stringify(args); if (!(hash in memoize.cache)) { return memoize.cache[hash] = fn.apply(fn, args); } return memoize.cache[hash]; }; };