【发布时间】:2013-05-25 09:37:42
【问题描述】:
所以想象一下,你在 JavaScript 中有一个关联数组:
var hashTable = {};
hashTable["red"] = "ff0000";
hashTable["green"] = "00ff00";
hashTable["blue"] = "0000ff";
当您检索这样的值时会发生什么:
var blue = hashTable["blue"];
性能是否与其他语言的哈希表相似?我的意思是,是否有一个实际的哈希函数用于确定属性的位置,或者是否有一个循环搜索,例如:
for (var color in hashTable) {
if (hashTable.hasOwnProperty(color)) {
//look for matching key
}
}
实现是否因浏览器而异?我找不到与此特定主题相关的任何内容。谢谢。
【问题讨论】:
-
由于属性查找无疑是一个关键的性能领域,您可以放心地打赌,任何现代 JavaScript 引擎都会非常高效地完成它。
-
它依赖于实现,但线性搜索将是最愚蠢的方法。查找表有很多有效的策略,哈希表只是其中一种。 B树是另一种可能性。
-
这是 Pointy 评论的关键性能领域。请注意,您没有“关联数组”,而是一个普通对象,您可以通过数组表示法设置和获取属性值。
-
当我想了解性能时,我会构建简单的测试并进行一些测量。是什么阻止你这样做?
-
你可以把 JavaScript 对象想象成哈希表...
标签: javascript hashtable associative-array