使用对象作为哈希键的最有效方法

Most efficient way to use an object as a hash key

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

但是,我的函数采用单个参数,其值非常大且多维Array

进行缓存的标准方法(也是我能想到的唯一方法)是在函数本身上创建一个 cache 属性(cache 是一个散列) .函数的每个 运行,您可以检查 myFunc.cache[arg] 是否存在,如果该值存在,则只需 return 即可,否则您将正常执行计算并将参数添加为 [=之后 cache 的 32=]。

但是,javascript 似乎不会在您创建它们时尝试评估用作散列键的字符串,而总是将它们视为字符串。 example

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

这个问题基本上是我在不知情的情况下问的:

JavaScript Hashmap Equivalent

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

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