我在JavaScript中有一个n * n * n数组,其中我需要执行很多访问。在JavaScript中访问多维数组的最有效方法
我不需要按顺序访问所有元素,只需要在特定位置。如果可能的话,我也希望在使用之前不要分配数组单元的所有内存(其他数据直接需要几MB内存)。
我正在寻找最有效的方法。 我试图使用由内置键(x +'#'+ y +'#'+ z)索引的词典,但它的效率不够高。
你能提出一些其他有效的方法来实现这一目标吗?
我在JavaScript中有一个n * n * n数组,其中我需要执行很多访问。在JavaScript中访问多维数组的最有效方法
我不需要按顺序访问所有元素,只需要在特定位置。如果可能的话,我也希望在使用之前不要分配数组单元的所有内存(其他数据直接需要几MB内存)。
我正在寻找最有效的方法。 我试图使用由内置键(x +'#'+ y +'#'+ z)索引的词典,但它的效率不够高。
你能提出一些其他有效的方法来实现这一目标吗?
恐怕没有比字典方法更快速的访问对象的方法,因为这就是Javascript中的一切。为了不分配内存,你可以使用一个对象而不是一个数组:
var x = {};
var key = x + '#' + y + '#' + z;
x[key] = 'some value';
这将至少给你记忆的关注,但我不知道它真的太大的关注。 (另外,我甚至不确定如果使用数组,它将分配内存,因为我不熟悉Javascript中的内存分配)。
我认为你的多维数组非常好。如果创建的是稀疏的,它不会吃掉所有的内存,并且更像一个简单的“字典”对象 - 您也可以使用嵌套对象。然而,我建议嵌套查找比在一个巨大的字典中更快,因为散列函数变得更简单,只需较少的密钥。另外,从最里面的维度加载或迭代完整数组的速度将明显快于查询巨大字典中的每个单个项目。毕竟,如果您实际上没有遇到任何重要的性能问题,请使用您发现的易于编写/读取/使用的内容。
'yourArray [0] [1] [2]'有什么问题? – 2013-02-27 20:45:40
@RocketHazmat显然效率不够高;;) – jondavidjohn 2013-02-27 20:46:01
字典方法效率不够高?我对你有坏消息:没有更好的方式来访问数据(至少在一般情况下)。顺便说一句:几MB的内存对于现在的计算机来说是没有任何**的。 :D – freakish 2013-02-27 20:46:56