用于int-string对的高性能JS映射

时间:2012-10-25 09:56:28

标签: javascript jquery dictionary

我需要一个将int(s)映射到string(s)的Javascript(hashmap或其他)中的高性能地图。 dom准备好后,地图将用于构建网页的某些部分。我知道简单的javascript对象也像地图一样工作,但我需要以最佳性能工作。

我想通过在网页上附加字符串同时从服务器生成响应页面来一次性初始化包含所有数据对的地图。

如何提高int-string对的javascript map的性能或者是否有相同的实现?

-

使用jQuery 1.7

2 个答案:

答案 0 :(得分:7)

好的,我会在这里发布,因为它更像是一个答案:

使用数组。考虑到任何实现都必须使用js原语和对象,你将很难找到比这更高效的东西。

javascript的大多数(全部?)实现中的数组可能很稀疏。所以array.length将返回最后一个元素的索引+ 1,但是在稀疏的情况下,数组将不会分配所有元素,并将使用对象属性语义来访问它的元素(意思是,它实际上是一个带有整数作为键的哈希表)。

它基本上为您提供了您正在寻找的行为。

如果是负数,请使用第二个数组。

关于单个语句初始化:一般情况下你不能这样做,因为它基于隐式知道项索引。

你可以做的是附加一些内容:

 var arr = [];

 arr[int1] = val1;
 arr[int2] = val2;
 arr[int3] = val3;
 arr[int4] = val4;
 ...
 arr[intn] = valn;

我的意思是你必须以某种方式列出(数字,字符串)对。

答案 1 :(得分:-1)

我认为你应该使用以下内容 var l_map = {};

添加元素使用 l_map[<your integer>] = <your string>

并检索是 var l_value = l_map[<your integer>];

这是解决问题的一种方法。

第二种方法很简单,只需使用数组(或列表),因为它根据位置存储值,如下所示: var l_array = [];

在上次使用时添加元素:l_array.push(<your string>); 在指定位置添加元素:l_array.splice(<position>,0,<your string>);

并检索使用情况:l_array[<posit>];