我有以下代码,它试图生成随机数的二维数组:
var block_size = 32;
var can_width = can.width;
var color_depth = 12;
var passes = can_width / block_size;
var map_store = new Array(passes);
for(i=0;i<passes;i++) {
for(j=0;j<passes;j++) {
map_store[i] = new Array(passes);
color = Math.random() * color_depth;
map_store[i][j] = Math.round(color);
}
}
如果我在循环中放置console.log
语句似乎工作正常,但是如果我尝试访问循环之外的map_store
数组。它的所有元素都是未定义的。这是为什么?
答案 0 :(得分:9)
map_store[i] = new Array(passes);
应高于第二个for
循环。您正在清除之前的j
值。
for(i=0;i<passes;i++) {
map_store[i] = new Array(passes); // <--
for(j=0;j<passes;j++) {
color = Math.random() * color_depth;
map_store[i][j] = Math.round(color);
}
}