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