Javascript对象中的二维数组

Javascript对象中的二维数组,javascript,arrays,2d,dimensional,Javascript,Arrays,2d,Dimensional,我想在Javascript中创建一个包含一个或多个二维数组的对象 我尝试了以下方法(在本例中,我只尝试添加一个二维数组): 信息: -这给了我一个奇怪的错误“missing:after property id”,这似乎没有多大意义 -不幸的是,到目前为止,我还没有找到使用google实现这一点的示例 -如果我不添加字段[0]。。。用于创建第二个阵列,它可以工作。 -将XSIZE和YSIZE更改为新数组(8)之类的数字。。。不起作用 如果有人能告诉我怎么做,或者解释为什么我根本不能这样做,需要使用

我想在Javascript中创建一个包含一个或多个二维数组的对象

我尝试了以下方法(在本例中,我只尝试添加一个二维数组):

信息:
-这给了我一个奇怪的错误“missing:after property id”,这似乎没有多大意义
-不幸的是,到目前为止,我还没有找到使用google实现这一点的示例
-如果我不添加字段[0]。。。用于创建第二个阵列,它可以工作。
-将XSIZE和YSIZE更改为新数组(8)之类的数字。。。不起作用

如果有人能告诉我怎么做,或者解释为什么我根本不能这样做,需要使用其他方法,我会非常感激

非常感谢

错误“missing:after property id”是因为JavaScript看到
字段[0]
部分,并希望在该字段的值之前有一个冒号。相反,它得到了一个开放的括号,所以它抱怨

不能硬编码在运行时设置了维度的对象定义。您还必须在运行时构建对象。也许是这样

var XSIZE = 8;  
var YSIZE = 8;

var obj = {  
 field : new Array(),  
 foo : 1,  
 bar : 100  
}

for (var i = 0; i < XSIZE; i++) {
  obj.field.push(new Array(YSIZE));
}
var XSIZE=8;
var-YSIZE=8;
var obj={
字段:新数组(),
傅:1,,
酒吧:100
}
对于(变量i=0;i
错误“missing:after property id”是因为JavaScript看到了
字段[0]
部分,并希望该字段的值前面有一个冒号。相反,它得到了一个开放的括号,所以它抱怨

不能硬编码在运行时设置了维度的对象定义。您还必须在运行时构建对象。也许是这样

var XSIZE = 8;  
var YSIZE = 8;

var obj = {  
 field : new Array(),  
 foo : 1,  
 bar : 100  
}

for (var i = 0; i < XSIZE; i++) {
  obj.field.push(new Array(YSIZE));
}
var XSIZE=8;
var-YSIZE=8;
var obj={
字段:新数组(),
傅:1,,
酒吧:100
}
对于(变量i=0;i
在对象文字表示法中,属性名称必须正好是:属性名称。首先,
字段[0]
不是属性名。其次,属性在对象定义之后才存在,因此在此之前您无法访问属性

您应该做的是在创建对象后设置数组:

var obj = {...}
obj.field[0] = [...];
或嵌套数组文字:

var obj = {
    field: [ [...],
              ...
           ],
    ...
}

创建数组时不必担心设置数组大小,因为添加元素时数组大小会增加。

在对象文字表示法中,属性名称必须正好是:属性名称。首先,
字段[0]
不是属性名。其次,属性在对象定义之后才存在,因此在此之前您无法访问属性

您应该做的是在创建对象后设置数组:

var obj = {...}
obj.field[0] = [...];
或嵌套数组文字:

var obj = {
    field: [ [...],
              ...
           ],
    ...
}

创建数组时不必担心设置数组大小,因为添加元素时数组大小会增加。

您只能声明以这种方式构造的对象的属性;不在另一个“级别”中的对象上

您可以使用
for
循环:

for(var i = 0; i < XSIZE; i++) {
  obj.field[i] = new Array(YSIZE);
}
for(变量i=0;i

请注意,
YSIZE
是不必要的,因为空数组也可以正常工作(
[]
)。

您只能声明以这种方式构造的对象的属性;不在另一个“级别”中的对象上

您可以使用
for
循环:

for(var i = 0; i < XSIZE; i++) {
  obj.field[i] = new Array(YSIZE);
}
for(变量i=0;i

请注意,
YSIZE
是不必要的,因为空数组也可以正常工作(
[]
)。

您可以将二维数组作为obj属性,而无需借助外部过程,并将所有内容都保留在对象内部。首先创建空的“字段”数组

var obj = {
field:[],

foo:1,
bar:100
};
现在,创建一个对象的方法,在初始无量纲数组的基础上创建一个二维数组。您可以在运行时根据需要确定多维数组的长度和维数:

var obj = {
field:[],
multifield:function(x,y){for (var count=0;count<x;count++)  {this.field[count]=new Array(y);}}, 

foo:1,
bar:100
};

您可以将二维数组作为obj属性,而无需求助于外部过程,并将所有内容都保留在对象内部。首先创建空的“字段”数组

var obj = {
field:[],

foo:1,
bar:100
};
现在,创建一个对象的方法,在初始无量纲数组的基础上创建一个二维数组。您可以在运行时根据需要确定多维数组的长度和维数:

var obj = {
field:[],
multifield:function(x,y){for (var count=0;count<x;count++)  {this.field[count]=new Array(y);}}, 

foo:1,
bar:100
};

可能重复的。。。可能重复的。。。你好!我测试了这个,这个似乎很好用!我将使用这种方法。谢谢!我一有足够的代表就会给你+1。你好!我测试了这个,这个似乎很好用!我将使用这种方法。谢谢!只要我有足够的代表,我就会给你+1。嗨@outis。当我尝试Borodin的反应时,没有看到你的反应,但似乎与他的反应方向一致。我也会尽快给你+1。谢谢@outis:但您确实需要设置多维数组的所有维度的大小,但最后一个维度除外。这是pim面临的主要问题。您不能只写
var字段=[[]];字段[7][7]=99
,因此他所有的
XSIZE
二级数组都必须创建并推送到一级数组中。@Borodin:您的示例的问题不是数组的大小没有预先声明,而是条目没有预先声明<代码>变量字段=[];字段[7]=[];字段[7][7]=99工作正常。在您的示例中,像
Array(8)
这样的东西绝对没有帮助。Hi@outis。当我尝试Borodin的反应时,没有看到你的反应,但似乎与他的反应方向一致。我也会尽快给你+1。谢谢@outis:但您确实需要设置多维数组的所有维度的大小,但最后一个维度除外。这是pim面临的主要问题。您不能只写
var字段=[[]];字段[7][7]=99
,所以他所有的
XSIZE
second-le