我对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和值,但上面只返回我循环时的值。关于如何使这项工作或有更好的方法来做任何建议?
由于
答案 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
。
循环槽并不难,当你到达一个维度的末尾时,可以验证数组的长度,例如z
将y
增加一,并将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或更多维度,只需将其他循环放入循环内。
注意:我没有测试过这个函数,这只是一个算法,你应该验证输入,如果插入负长度或浮点数,这可能会让你的浏览器崩溃。