在Javascript中创建数组

时间:2012-03-03 04:42:37

标签: javascript arrays multidimensional-array

我对javascript不熟悉,我在javascript中制作2d(或者我可能需要3d)数组时遇到了麻烦。

我目前有两条需要收集的信息:一个ID和一个值,所以我创建了以下内容:

var myArray = [];

var id = 12;
var value = 44;

myArray[id]=value;

但是我意识到循环数组就像for循环一样容易,所以我想到了这个:

myArray[myArray.length] = id;
myArray[myArray.length-1][id]=value;

我想这样做,以便在for循环中我可以轻松获得id和值,但上面只返回我循环时的值。关于如何使这项工作或有更好的方法来做任何建议?

由于

3 个答案:

答案 0 :(得分:15)

为什么不使用object hash es的数组?此方法允许您以键:值格式存储多个值:

var myArray = [];
var myElement = {
  id: 12,
  value: 44
}

myArray[0] = myElement;

然后你可以循环遍历myArray中的所有元素,如下所示:

var i = 0,
    el;

while (el = myArray[i++]) {
  alert(el.id + '=' + el.value);
}

答案 1 :(得分:2)

我认为你想要的是一个类似字典的结构(在JS中称为对象),例如{id =>值}

在JS中你可以这样做:

var myDict = { 'myId' : 'myValue' };
myDict[12] = 44; // from your example and this will be added to myDict
myDict[11] = 54;

for (var key in myDict) {
  console.log('key: ' + key + ', value: ' + myDict[key]);
}​

输出将是:

键:11,价值:54

键:12,价值:44

key:myId,value:myValue

答案 2 :(得分:0)

执行多维数组的最佳方法可能是使用循环动态创建。

所以你可以像array[x][y][z]标签一样3D-array

循环槽并不难,当你到达一个维度的末尾时,可以验证数组的长度,例如zy增加一,并将z重置为0.

2d-array的实例构造函数:

function Array2d(x,y){

    var array = new Array(x);

    while(x>0){
        array[x]=new Array(y);
        x--;
    }

    return array;
}

创建一个2d数组,你可以像这样使用:

var myMatrix = Array2d(4,4);

这会产生一个空的4x4矩阵myMatrix[4][4]

(0,0) (1,0) (2,0) (3,0)
(0,1) (1,1) (2,1) (3,1)
(0,2) (1,2) (2,2) (3,2)
(0,3) (1,3) (2,3) (3,3)

执行3D或更多维度,只需将其他循环放入循环内。


注意:我没有测试过这个函数,这只是一个算法,你应该验证输入,如果插入负长度或浮点数,这可能会让你的浏览器崩溃。