【问题标题】:Creating arrays in Javascript在 Javascript 中创建数组
【发布时间】:2012-03-21 13:25:50
【问题描述】:

我对 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 和值,但上面仅在我循环遍历它时返回值。有关如何使其正常工作的任何建议或有更好的方法吗?

谢谢

【问题讨论】:

  • 我对你想要做什么感到困惑。您是否要存储一堆 (id, value) 对?您需要稍后按 id 检索值还是只遍历对?
  • @takteek 遍历这些对,所以我想访问元素 0 处的值和 id

标签: javascript arrays multidimensional-array


【解决方案1】:

为什么不使用object hashes 的数组?这种方法允许您以 key:value 格式存储多个值:

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);
}

【讨论】:

  • id 和 value 并不总是 12 和 44,无论用户将 var 设置为什么,除非有办法设置 myElement.id = 0 myElement.value 然后将数组设置为 myElement
  • 你刚刚描述了怎么做,哈哈。 myElement.id = 0
  • @takteek 太棒了,谢谢...我希望它能以同样的方式工作
【解决方案2】:

我认为你想要的是一个类似字典的结构(在 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

【讨论】:

    【解决方案3】:

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

    所以你可以像我看到你的3D-array 标签一样拥有array[x][y][z]

    循环槽并不难,您可以验证数组的长度,当您到达一维的末尾时,例如zy 加一并将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 或更多维度,只需将其他循环放入循环中。


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 2011-03-17
      • 2018-07-09
      • 2019-07-18
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多