在 Javascript 中创建数组

问题描述 投票:0回答:4

我对 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 arrays multidimensional-array
4个回答
18
投票

为什么不使用 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);
}

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


1
投票

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

这样你就可以拥有像

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 或更多维度,只需将其他循环放入循环内即可。


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


-1
投票

在本视频中,我介绍了每个开发人员的数组基本方法。

  1. 推入、弹出、拼接、移位、取消移位
  2. 对于每个
  3. 查找、findIndex、findLastIndex、过滤、减少
  4. 地图、排序
  5. 每个,一些

欲了解更多详细方法,请观看此视频

👇👇👇

https://www.youtube.com/watch?v=P9F_RUZ5nUc

© www.soinside.com 2019 - 2024. All rights reserved.