我有一种情况,我会从使用函数缓存(memoization)中受益匪浅。
但是,我的函数只接受一个参数,其值是一个非常大且多维的Array
。
执行缓存的标准方法(以及我能想到的唯一方法)是在函数本身上创建cache
属性(cache
是一个哈希)。每次运行该函数时,您都可以检查是否存在myFunc.cache[arg]
并返回该值(如果存在),否则您将正常执行计算,然后将该参数作为cache
的属性添加。
但是,看起来javascript在创建它们时并不会尝试评估用作哈希键的字符串,而是始终只将它们视为字符串。 example
我可以将JSON.stringify
应用于参数,但由于数组很大并且嵌套,我想知道是否有更有效的方法来识别唯一参数。
答案 0 :(得分:0)
这个问题基本上就是我不知道的问题:
就我而言,最简单的解决方案就是手动使我的数组的第0个索引成为可以用作哈希键的ID。
如果没有这样做或类似的方法,你必须创建自己的hashmap(在链接的问题中概述)或等待实现官方Map
对象。