我正在尝试用零和一个数组填充一个数组,如果你把它排列成一个6乘6的网格,那么就会有随机分散的数据直接相邻。
例如:
001101
111001个
001011
001110
111000
为了检查潜在的旁边是否有一个,我需要检查数组的4个值。这是我遇到困难的地方。我已尝试在Stackoverflow上实现其他问题的解决方案,但我不能让它专门用于if语句。
function initialize(){
tile = new Array(6);
first = true;
for(i = 0; i < 6; i++){
tile[i] = new Array(6);
for(j = 0; j < 6; j++){
//This is where I'm having difficulty
if(Math.random() < .75 && tile[i + 1][j + 1] != 'undefined' || tile[i - 1][j - 1] != 'undefined' || tile[i - 1][j + 1] != 'undefined' || tile[i + 1][j - 1] != 'undefined' || first){
tile[i][j] = 1;
first = false;
}else{
tile[i][j] = 0;
}
}
}
}
答案 0 :(得分:4)
您忘了添加typeof
这是您通常检查undefined的方法。
typeof tile[i - 1][j + 1] === 'undefined'
根据您的评论编辑,您正在做这样的事情
typeof tile[i - 1][j - 1] !== 'undefined'
并获得
的错误未捕获的TypeError:无法读取未定义或未捕获的TypeError的属性“1”:无法读取未定义的属性“-1”。
两件事:你试图访问-1的索引似乎总是会失败。也就是说,即使你修复了这个一个一个错误,就像
这样的表达式tile[i - 1][j - 1]
如果,将始终出错
tile[i - 1]
本身未定义。所以你必须单独检查。像
这样的东西(typeof tile[i - 1] === 'undefined' || typeof tile[i - 1][j + 1] === 'undefined')
这样,如果tile[i - 1]
未定义,整个表达式将在您收到错误之前“短路”。
答案 1 :(得分:1)
您正在使用字符串'undefined'检查是否相等,而不是使用未定义的值。尝试
tile[i + 1][j + 1] !== undefined
(undefined周围没有单引号)。