2012-05-02 65 views
3

我知道javascript不允许真正的多维数组,但是您可以通过在数组中将数组“排队”在一起。在javascript中创建多维数组

我有2个问题;

1)将10个数组转换为1个多维数组,其中有10个数组可以改善,损坏或不影响网页的性能?我希望创建一个有100个元素的数组,每个元素都是2个元素的数组,最后每个元素都是不确定长度的数组。

我有以下代码来创建这个“多维”数组:

var RouteArray = new Array(100); 
for (var i=0; i <100; i++) 
{ 
RouteArray[i]=new Array(2); 
    for (var j=0; j <2; j++) 
    { 
    RouteArray[i][j] = new Array(); 
    } 
} 

这段代码明智?或者您是否有经验的编码人员能够提出更好的方法?

另外我假设我可以再加入到不确定的阵列上面用下面的代码描述的多维阵列中:

RouteArray[88][0].push(ValueToPush); 

终于可以我然后调用使用以下我刚推值?

Var ValueAdded = RouteArray[88][0][0]; 

预先感谢您的时间,并道歉,如果这个问题已经回答了其他地方,我也尝试搜索,但要么不明白以前的职位或发现他们一点都不像我说的情况我不能不适用他们的建议。

约翰

+0

这个问题很可能是更多的话题上[代码审查(http://codereview.stackexchange.com)。 –

+0

作为一般建议,请熟悉诸如FireBug或Safari开发者控制台之类的工具。你可以交互式地尝试一些东西。或者只写一个最小的html页面并包含你的示例代码。只是尝试的东西。 – snies

+0

你的两个好朋友是http://jsfiddle.net/(玩代码)和http://jsperf.com/(比较性能)。在这种情况下,我会尽可能地懒于初始化数组。 – tjp

回答

3

1)将10个转化成阵列,其具有在其内 10阵列改善,损害或对网页的 性能没有影响1个多维数组?

几乎肯定没有性能影响,但它会对您理解代码和编写更少错误的能力产生巨大影响。

2)我希望创建具有100个索引的阵列,每个这些 的将与2个索引的阵列,并且最后这些2个 索引的每个被填充将具有不定长度的数组。

这将完全像您的示例代码大纲一样,如果您想让自己的脚湿润,这将是一个很好的起点。在实践中,具有许多维度的数组并不总是最好的数据结构来模拟您的代码所处理的任何内容,主要是因为它们不是“可发现的”:您必须事先知道每个维度是什么。

在任何一种特定场景中,有更好的方式来构建数据是很有可能的,但我们必须具体谈论。无论如何,您提供的代码都可以使用。

+0

谢谢你的建议和输入乔恩。我刚刚遇到另一个问题,我能够使用var ValueAddedArray = RouteArray [88] [0];从多维数组中调用整个数组。 – TranquilityEden

+1

你可以这样做,但要小心 - ValueAddedArray将是对RouteArray [88] [0]的引用 - 如果你改变一个,另一个也会改变。 – tjp

+0

@tjp谢谢你的回应,我只想检查我明白你在说什么。如果我要做如下的事情:var ValueAddedArray = RouteArray [88] [0];接着是ValueAddedArray [2] =“NewValue”;这会同时将值NewValue添加到ValueAdded [2]和RouteArray [88] [0] [2]?也会ValueAddedArray.clear();只清空保存在RouteArray [88] [0]索引中的数组,还是整个RouteArray? – TranquilityEden