【问题标题】:Why is a "classic" hash useful?为什么“经典”哈希有用?
【发布时间】:2014-01-30 02:37:01
【问题描述】:

我的任务是维护一些使用大量 PrototypeJS 的遗留前端代码。我对他们在代码中使用的一些东西感到困惑。例如,the documentation 描述了这个 $H 函数,用于创建“哈希”并以“经典哈希方式”访问其属性,这似乎是一个简单的 obj.get('propName')

var h = $H({name: 'John', age: 26, country: 'Australia'});
// Equivalent to:
var h = new Hash({name: 'John', age: 26, country: 'Australia'});
// Can then be accessed the classic Hash way
h.get('country');
// -> 'Australia'

为什么这很有用?我看到它在我维护的所有代码中都使用了它,最后决定我需要更好地理解最初的意图。

【问题讨论】:

  • 他们有几种内置的哈希迭代方法。
  • @dandavis 你可以澄清一下吗?你的意思是迭代像for (var key in obj)这样的属性?

标签: javascript hash hashmap prototypejs


【解决方案1】:

“经典哈希”通常很有用,因为它提供了快速的键值对查找。在计算机科学术语中,算法复杂度是恒定的,即 O(1)。这意味着您可以立即获取散列中任何键的值。在示例哈希中,键是:姓名、年龄、国家/地区

所以调用h.get('name')可以快速得到名字(John),调用h.get('age')可以快速得到他的年龄(26),也可以快速得到他的国家(澳大利亚)通过调用 h.get('country')。

将此与将此数据存储在一个列表中进行比较,您必须遍历该列表才能找到姓名、年龄和国家/地区的值。

【讨论】:

    【解决方案2】:

    来自Prototype.JS docs

    由于 JavaScript 的特性,每个对象实际上都是一个哈希;但是Hash 添加了许多方法,让您可以枚举键和值、迭代键/值对、将两个散列合并在一起等等。

    所以,基本上是因为那时你可以使用keysvalueseachmergeupdate等。

    【讨论】:

    • 啊,我不知何故错过了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2021-06-03
    • 2014-08-09
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多