检查是否定义了数组中的值
Check if values in array are defined
我试图用0和1填充一个数组,这样,如果你把它排列成一个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;
}
}
}
}
您忘记添加typeof
这就是您通常检查未定义的方式。
typeof tile[i - 1][j + 1] === 'undefined'
更多关于类型的信息
编辑,根据你的评论,你正在做这样的
typeof tile[i - 1][j - 1] !== 'undefined'
并得到的错误
未捕获的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]
未定义,那么在得到错误之前,整个表达式将"短路"。
您使用字符串'undefined'而不是未定义的值来检查是否相等。尝试
tile[i + 1][j + 1] !== undefined
(未定义的两边没有单引号)。
这里的讨论:如何检查";未定义的";在JavaScript中?
相关文章:
- 查找对象数组是否包含其中一个标记的最快方法
- 检查数组是否包含
- 确定数组是否包含偶数
- 在 JavaScript 中连接字符串或数组是否更快
- 检查对象数组是否具有所有必需的键
- 检查数组是否包含指定的对象
- 在通过套接字发送到客户端之前压缩中等大小的javascript数组是否值得
- 检查数组是否有空元素
- 检查输入框的数组是否为空
- 如何检查JSON数组是否等于
- 检查数组是否已定义并且具有长度
- 检查数组是否包含特定对象
- 什么'最合适的数据结构是什么?(使用一个有间隙的数组是否存在缺点或注意事项?)
- 如何检查子集数组是否包含超集数组之一
- 检查对象数组是否包含布尔值true/false
- 检查数组是否在MongoDB文档中包含帖子ID
- 检查数组是否包含允许或不允许的字符
- 检查 javascript 数组是否不仅包含空值
- 在循环时修改数组是否安全
- 列表/数组是否有效 JSON