在javascript中访问多维数组的最有效方法

时间:2013-02-27 20:44:19

标签: javascript arrays performance multidimensional-array

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

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

我正在寻找最有效的方法。 我试图使用由内置键索引的词典(x +'#'+ y +'#'+ z),但它的清晰度不够高。

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

2 个答案:

答案 0 :(得分:1)

没有比字典方法更快的方式来访问对象,我担心,因为这就是Javascript中的所有东西,真的。要不分配内存,可以使用对象而不是数组:

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

这至少会让你对你的记忆产生担忧,但我不确定这真的是一个问题。 (另外,我甚至不确定如果你使用数组它将分配内存,因为我不熟悉Javascript中的内存分配。)

答案 1 :(得分:0)

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

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