0

我在 javascript 中有一个 *n*n 数组,我需要在其中执行大量访问。

我不需要按顺序访问所有元素,而只需要在特定位置访问。如果可能的话,我还希望在使用之前不要分配数组单元的所有内存(否则将直接占用几 MB 内存)。

我正在寻找最有效的方法。我尝试使用由内置键( x + '#' + y + '#' + z )索引的字典,但它显然不够有效。

您能否提出一些其他有效的方法来实现这一目标?

4

2 回答 2

1

恐怕没有比字典方法更快的访问对象的方法了,因为这就是 Javascript 中的一切,真的。要不分配内存,您可以使用对象而不是数组:

var x = {};
var key = x + '#' + y + '#' + z;
x[key] = 'some value';

这至少会给您带来记忆问题,但我不确定这是否真的很令人担忧。(另外,我什至不确定如果你使用数组它会分配内存,因为我不熟悉 Javascript 中的内存分配)。

于 2013-02-27T21:43:34.473 回答
0

我认为您的多维数组非常好。如果创建稀疏,它不会占用所有内存,并且更像一个简单的“字典”对象 - 您也可以使用嵌套对象。然而,我建议嵌套查找将比在一个巨大的字典中更快,因为散列函数使用更少的键变得更简单。此外,从最里面的维度加载或迭代一个完整的数组将明显快于从巨大的字典中查询每个项目。

毕竟,如果您实际上没有遇到任何基本的性能问题,请使用您认为更容易编写/阅读/使用的内容。

于 2013-02-27T22:44:51.450 回答