我对 javascript 不太熟悉,在用 javascript 制作 2d(或者也许我可能需要 3d)数组时遇到了一些麻烦。
我目前需要收集 2 条信息:一个 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 和值,但上面的内容仅在我循环遍历时返回值。关于如何让它工作有什么建议或者有更好的方法吗?
谢谢
为什么不使用 object hashes 数组?这种方法允许您以键:值格式存储多个值:
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);
}
我认为你想要的是一个类似字典的结构(在JS中称为对象),例如 { id => value}
在 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
键:myId,值:myValue
创建多维数组的最佳方法可能是使用循环动态创建。
这样你就可以拥有像
array[x][y][z]
一样的东西,就像我看到你的3D-array
标签一样。
循环槽并不难,当到达一维末尾时,您可以验证数组的长度,例如
z
将 y
加一并将 z
重置为 0。
二维数组的构造函数示例:
function Array2d(x,y){
var array = new Array(x);
while(x>0){
array[x]=new Array(y);
x--;
}
return array;
}
要创建一个二维数组,您可以像这样使用:
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 或更多维度,只需将其他循环放入循环内即可。
注意:我没有测试这个函数,这只是一个算法,你应该验证输入,如果你插入负长度或浮点数,这可能会让你的浏览器崩溃。
在本视频中,我介绍了每个开发人员的数组基本方法。
欲了解更多详细方法,请观看此视频
👇👇👇