Javascript 将对象用作哈希键的最有效方法

Javascript 将对象用作哈希键的最有效方法,javascript,arrays,json,caching,memoization,Javascript,Arrays,Json,Caching,Memoization,在这种情况下,使用函数缓存()会使我受益匪浅 但是,我的函数只接受一个参数,它的值非常大,而且是多维的 进行缓存的标准方法(也是我能想到的唯一方法)是在函数本身上创建cache属性(cache是散列)。每次运行函数时,您都可以检查是否存在myFunc.cache[arg],如果该值存在,只需返回该值,否则您将按正常方式执行计算,然后将参数添加为cache的属性 但是,当您创建字符串时,javascript似乎不会尝试对用作哈希键的字符串求值,而是始终将其视为字符串 我可以应用于参数,但由于数组将

在这种情况下,使用函数缓存()会使我受益匪浅

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

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

但是,当您创建字符串时,javascript似乎不会尝试对用作哈希键的字符串求值,而是始终将其视为字符串


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

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

在我的例子中,最简单的解决方案就是手动将数组的第0个索引设置为可以用作哈希键的ID


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

是你控制的环境还是好的旧浏览器?基本上,您要求的是全新的。只是一个普通的老浏览器。您的JSFIDLE的期望输出是什么?期望输出是
对象
(表示它是一个数组)为什么不这样创建您的哈希呢?