basant307/AI_Governance_Project
048
1export const memoize = ( fn, keyFn ) => {2 if( !keyFn ){3 keyFn = function(){4 if( arguments.length === 1 ){5 return arguments[0];6 } else if( arguments.length === 0 ){7 return 'undefined';8 }9 10 let args = [];11 12 for( let i = 0; i < arguments.length; i++ ){13 args.push( arguments[ i ] );14 }15 16 return args.join( '$' );17 };18 }19 20 let memoizedFn = function(){21 let self = this;22 let args = arguments;23 let ret;24 let k = keyFn.apply( self, args );25 let cache = memoizedFn.cache;26 27 if( !(ret = cache[ k ]) ){28 ret = cache[ k ] = fn.apply( self, args );29 }30 31 return ret;32 };33 34 memoizedFn.cache = {};35 36 return memoizedFn;37};38 