检查是否定义了数组中的值

Check if values in array are defined

本文关键字:数组 是否 定义 检查      更新时间:2024-06-16

我试图用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中?