【问题标题】:Creating a 2d array of objects in javascript在javascript中创建一个二维对象数组
【发布时间】:2011-06-28 17:48:21
【问题描述】:

我有一个 javascript 对象 -

cell{xPos, yPos};

我想创建这个对象的二维数组。

cellPrototype = function(x, y) {
this.xPos = x;
this.yPos = y;
}
var cell = new Array();
for(var i=0;i<10;i++)
{
  cell[i] = new Array();
  for(var j=0;j<10;j++)
  {
     cell[i][j] = new cellPrototype(i,j);
  }
}

此代码不起作用。 也没有 -

var cellPrototype = function(x, y) {    
return { 
  xPos : x;
  yPos : y;
}
var cell = new Array();
for(var i=0;i<10;i++)
{
  cell[i] = new Array();
  for(var j=0;j<10;j++)
  {
     cell[i][j] = new cellPrototype(i,j);
  }
}

那么如何在 javascript 中创建一个对象的二维数组呢?

【问题讨论】:

  • 除非我误解了您的问题,否则您的第一个示例似乎可以正常工作:jsfiddle.net/tgz22
  • 什么不起作用?第二个至少给了我一个包含 10 个数组的数组,每个数组有 10 个 cellPrototypes...
  • @James @josh.trow 不知道发生了什么。在过去的一两个小时里,我一直在我的电脑上测试这段代码,试图找出问题所在。在 jsFiddle 摆弄了一下之后,我让它工作了。不知道,也许某个地方的一些小错字是问题所在。所有回答和评论的人,感谢您的帮助。

标签: javascript


【解决方案1】:

这对我来说很好,我不确定这是否正是您正在寻找的输出,在哪里 Array[x][y] 将引用一个点在x, y 的对象。

var Coords = function(x, y) {
    return {
        "x" : x,
        "y" : y
    };
};

var Main = [];

for (var i = 0, l = 10; i < l; i++) {
    Main[i] = [];
    for (var j = 0, l2 = 10; j < l2; j++) {
        Main[i][j] = Coords(i, j);
    }
}

http://jsfiddle.net/robert/d9Tgb/

【讨论】:

    【解决方案2】:

    你可以像这样制作一个二维数组:

    var new_array = [];
    var arr_length = 10;
    for(var i = 0; i < arr_length; ++i){
        new_array[i] = [];
    }
    

    【讨论】:

      【解决方案3】:

      这篇文章有点老了,但这里有另一种创建二维数组的方法

      var arr1=[];
      var x=['a','b','c','d'];
      var y=[1,2,3,4];     
      
      for( var i in x){
          arr1.push([x[i],y[i]]); //For x and y of the same length
      }
      

      在 JavaScript 中 x 和 y 可以是对象数组

      jsFiddle It :)

      【讨论】:

        【解决方案4】:

        创建一个空数组并将子数组压入其中

        var array = [];
        array.push([1,2,3,4]);
        //array[0][0] == 1
        

        或一键完成

        var array = [[1,2,3,4], [1,2,3,4], [1,2,3,4]];
        

        【讨论】:

        • 那些不是对象。
        猜你喜欢
        • 2021-03-16
        • 2021-06-16
        • 2018-08-18
        • 1970-01-01
        • 2019-06-13
        • 2011-04-11
        • 2015-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多