Javascript可以';t将未定义的转换为对象
我有以下代码Javascript可以';t将未定义的转换为对象,javascript,Javascript,我有以下代码 for(i = 0; i < num; i++) { var yPos = 10*i; var numCells = wid/30; for(j = 0; j < numCells; j++) { blocks[i][j] = 1; } } 但是,当我执行代码时,我收到一个错误,指出: can't convert undefined to object 有什么想法吗/ v
for(i = 0; i < num; i++) {
var yPos = 10*i;
var numCells = wid/30;
for(j = 0; j < numCells; j++) {
blocks[i][j] = 1;
}
}
但是,当我执行代码时,我收到一个错误,指出:
can't convert undefined to object
有什么想法吗/ var块=[];
var blocks = [];
for(i = 0; i < num; i++) {
var yPos = 10*i;
var numCells = wid/30;
blocks[i] = []; // here is a fix
for(j = 0; j < numCells; j++) {
blocks[i][j] = 1;
}
}
对于(i=0;i
var blocks=[];
对于(i=0;i
在您的特定情况下,由于所有行都被初始化为相同的(一系列的1),因此您也可以这样做
var blocks = new Array(),
blockRow = new Array();
for (var i = 0; i < numCells; i++) {
blockRow.push(1);
}
for (var i = 0; i < num; i++) {
blocks.push(blockRow.slice()); // slice() makes a copy of blockRow
}
var blocks=new Array(),
blockRow=新数组();
对于(var i=0;i
在您的特定情况下,由于所有行都被初始化为相同的(一系列的1),因此您也可以这样做
var blocks = new Array(),
blockRow = new Array();
for (var i = 0; i < numCells; i++) {
blockRow.push(1);
}
for (var i = 0; i < num; i++) {
blocks.push(blockRow.slice()); // slice() makes a copy of blockRow
}
var blocks=new Array(),
blockRow=新数组();
对于(var i=0;i
我怀疑您需要将块声明为2D数组。试试[这个问题][1]。[1] :我怀疑您需要将块声明为二维数组。试试[这个问题][1]。[1] :非常感谢,这把它修好了;你知道怎么回事吗?:)不,只是猜测。。。开玩笑:)var blocks=[]
-现在blocks
是一个数组
,但是blocks[i]
不是数组。。。添加块[i]=[]
后,它成为一个数组,您可以操作块[i][x]
。在设置块[i]=[]
之前,它等于未定义的
,您尝试更改未定义对象的属性。我希望它足够清楚,因为我的英语不是很好…哦,好的,谢谢,现在明白了;D被用于其他编程语言,在这些语言中,您可以只添加维度而不声明它们!关于JS,你要知道的第二件重要的事情是——我的答案旁边的空白复选标记需要按下,否则数组可能会停止工作:)非常感谢,这就解决了它;你知道怎么回事吗?:)不,只是猜测。。。开玩笑:)var blocks=[]
-现在blocks
是一个数组
,但是blocks[i]
不是数组。。。添加块[i]=[]
后,它成为一个数组,您可以操作块[i][x]
。在设置块[i]=[]
之前,它等于未定义的
,您尝试更改未定义对象的属性。我希望它足够清楚,因为我的英语不是很好…哦,好的,谢谢,现在明白了;D被用于其他编程语言,在这些语言中,您可以只添加维度而不声明它们!关于JS,你要知道的第二件重要的事情是:我的答案旁边的空白复选标记需要按下,否则数组可能会停止工作:)