提问人:user1219627 提问时间:3/3/2012 更新时间:11/17/2023 访问量:32212
在 Javascript 中创建数组
Creating arrays in Javascript
问:
我对 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 和值,但上面仅在我循环时返回值。关于如何让它工作的任何建议,或者有没有更好的方法来做到这一点?
谢谢
答:
18赞
rjz
3/3/2012
#1
为什么不使用对象哈希数组?此方法允许您以键值格式存储多个值:
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);
}
评论
0赞
user1219627
3/3/2012
id 和 value 并不总是 12 和 44,它是用户将 var 设置为的任何值,除非有办法设置 myElement.id = 0 myElement.value,然后将数组设置为 myElement
0赞
takteek
3/3/2012
你刚才描述了怎么做,哈哈。myElement.id = 0
0赞
user1219627
3/3/2012
@takteek 太棒了,谢谢...我希望它能以同样的方式工作
1赞
Vitim.us
3/3/2012
#2
做多维数组的最好方法可能是使用循环即时创建。
所以你可以像我看到你的标签一样。array[x][y][z]
3D-array
循环槽并不难,您可以验证数组的长度,当您到达一个维度的末尾时,例如 增加 1 并重置为 0。z
y
z
2d-array 的示例构造函数:
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 或更多维度,只需将其他循环放入循环中即可。
注意:我没有测试过这个函数,这只是一个算法,你应该验证输入,如果你插入一个负长度或浮点数,这可能会让你的浏览器崩溃。
3赞
snjoetw
3/3/2012
#3
我认为你想要的是一个类似字典的结构(在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
评论