在 Javascript 中创建数组

Creating arrays in Javascript

提问人:user1219627 提问时间:3/3/2012 更新时间:11/17/2023 访问量:32212

问:

我对 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 和值,但上面仅在我循环时返回值。关于如何让它工作的任何建议,或者有没有更好的方法来做到这一点?

谢谢

JavaScript 多维数组

评论

0赞 takteek 3/3/2012
我对你想做什么感到困惑。您是否正在尝试存储一堆(id,value)对?您是需要稍后按 id 检索值,还是只是遍历这些对?
0赞 user1219627 3/3/2012
@takteek遍历这些对,所以我想同时访问元素 0 处的 value 和 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。zyz

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