将对象用作散列键的最有效方法

时间:2015-07-06 15:10:25

标签: javascript arrays json caching memoization

我有一种情况,我会从使用函数缓存(memoization)中受益匪浅。

但是,我的函数只接受一个参数,其值是一个非常大且多维的Array

执行缓存的标准方法(以及我能想到的唯一方法)是在函数本身上创建cache属性(cache是一个哈希)。每次运行该函数时,您都可以检查是否存在myFunc.cache[arg]并返回该值(如果存在),否则您将正常执行计算,然后将该参数作为cache的属性添加。

但是,看起来javascript在创建它们时并不会尝试评估用作哈希键的字符串,而是始终只将它们视为字符串。 example

我可以将JSON.stringify应用于参数,但由于数组很大并且嵌套,我想知道是否有更有效的方法来识别唯一参数。

1 个答案:

答案 0 :(得分:0)

这个问题基本上就是我不知道的问题:

JavaScript Hashmap Equivalent

就我而言,最简单的解决方案就是手动使我的数组的第0个索引成为可以用作哈希键的ID。

如果没有这样做或类似的方法,你必须创建自己的hashmap(在链接的问题中概述)或等待实现官方Map对象。