在JavaScript中创建一个二维对象数组

6

我有一个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中创建一个对象的二维数组?


1
除非我误解了你的问题,你的第一个例子似乎可以正常工作:http://jsfiddle.net/tgz22/ - James Allardice
什么不起作用?至少第二个给我一个包含10个数组,每个数组有10个cellPrototypes的数组... - josh.trow
@James @josh.trow 不知道怎么回事。我在自己的电脑上测试了这段代码一个多小时,试图找出问题所在。在jsFiddle上玩弄一番后,终于把它搞定了。也许是某个小错误导致的问题。在座各位回答和评论的朋友们,感谢你们的帮助。 - elssar
4个回答

7

这对我来说很好用,但我不确定这是否正是你所需的输出,其中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] = [];
}

0

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

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 :)


-1
创建一个空数组,并将子数组推入其中。
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]];

1
那些不是对象。 - tomdemuyt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接