【发布时间】:2012-10-25 09:56:28
【问题描述】:
我需要一个高性能的 Javascript 映射(哈希映射或其他),将 int(s) 映射到 string(s)。在 dom 准备好后,该地图将用于构建网页的某些部分。我知道简单的 javascript 对象也可以像地图一样工作,但我需要以最佳性能工作。
我想在从服务器生成响应页面的同时,通过在网页上附加一个字符串来一次用所有数据对初始化地图。
有什么方法可以提高整数字符串对的 javascript 映射的性能,或者是否有相同的实现?
--
使用 jQuery 1.7
【问题讨论】:
-
使用数组。考虑到任何实现都必须使用 js 基元和对象,您将很难找到比这更高效的东西。
-
如果需要,大多数 js 实现中的数组也会自动切换到稀疏实现
-
@soulcheck:数组会很棒,但整数键的范围可能从 0 到 Integer.MAX_VALUE(32 位)。因此,例如,如果我将某些东西存储在像这样的 array1[23465435] 这样的数组中,它会创建这么长的数组吗!?我需要存储不超过 100-200 个条目,但使用的 int 键可能分散在整个 Integer 范围内。
-
整数有时甚至可能是负数。在那种情况下,数组会有帮助吗?
-
大多数(全部?)javascript 实现中的数组可能是稀疏的。所以
array.length将返回最后一个元素的索引 + 1,但在稀疏情况下,数组不会分配所有元素,并将使用对象属性语义来访问它的元素(意思是,它实际上是一个以整数作为键的哈希表)。它基本上为您提供了您正在寻找的行为。如果是负整数,请使用第二个数组;)
标签: javascript jquery dictionary