【发布时间】:2015-07-06 15:10:24
【问题描述】:
我有一种情况,我可以从使用函数缓存中受益匪浅 (memoization)。
但是,我的函数采用单个参数,其值是一个非常大且多维的Array。
进行缓存的标准方法(也是我能想到的唯一方法)是在函数本身上创建一个cache 属性(cache 是一个哈希)。每次运行该函数,您都可以检查myFunc.cache[arg] 是否存在,如果存在则简单地返回该值,否则您照常执行计算,然后将参数添加为cache 的属性。
但是,当您创建用作哈希键的字符串时,javascript 似乎不会尝试评估它们,而是始终将它们视为字符串。 example
我可以将JSON.stringify 应用于参数,但由于数组很大且嵌套,我想知道是否有更有效的方法来识别唯一参数。
【问题讨论】:
-
是您控制的某个环境还是只是好的旧浏览器?你基本上是在要求全新的maps。
-
只是一个普通的旧浏览器
-
JSFiddle 的期望输出是什么?
-
想要的输出是
object(表示它是一个数组) -
为什么不这样创建你的哈希? jsfiddle.net/f1L2pgow
标签: javascript arrays json caching memoization