【问题标题】:Most efficient way to use an object as a hash key将对象用作哈希键的最有效方法
【发布时间】: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


【解决方案1】:

这个问题基本上是我在不知不觉中问的:

JavaScript Hashmap Equivalent

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

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

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 2019-04-20
    • 2023-01-24
    • 2011-03-29
    • 2014-02-02
    • 2014-12-02
    • 1970-01-01
    • 2013-02-24
    • 2011-11-17
    相关资源
    最近更新 更多