Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查数组中的值是否已定义_Javascript_Arrays - Fatal编程技术网

Javascript 检查数组中的值是否已定义

Javascript 检查数组中的值是否已定义,javascript,arrays,Javascript,Arrays,我试图用0和1填充一个数组,如果你把它排列成一个6乘6的网格,就会有随机分散的,彼此直接相邻的数组 例如: 001101 111001 001011 001110 111000 为了检查是否有一个潜在的一个旁边,我需要检查数组的4个值。这就是我遇到困难的地方。我已经尝试过实现Stackoverflow上其他问题的解决方案,但我无法让它专门用于此if语句 function initialize(){ tile = new Array(6); first = true; fo

我试图用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;
            }
        }
    }
}
函数初始化(){
瓷砖=新阵列(6);
第一个=正确;
对于(i=0;i<6;i++){
瓦片[i]=新阵列(6);
对于(j=0;j<6;j++){
//这就是我遇到困难的地方
if(Math.random()<.75&&tile[i+1][j+1]!=“未定义”| tile[i-1][j-1]!=“未定义”| tile[i-1][j+1]!=“未定义”| tile[i+1][j-1]!=“未定义”|{
瓷砖[i][j]=1;
第一个=假;
}否则{
瓷砖[i][j]=0;
}
}
}
}

您正在检查是否与字符串“undefined”相等,而不是与未定义的值相等。试一试

tile[i + 1][j + 1] !== undefined
(未定义的周围没有单引号)


此处讨论:

您忘记添加
typeof

这是您通常检查未定义项的方式

typeof tile[i - 1][j + 1] === 'undefined'


编辑,根据你的评论,你正在做这样的事情

typeof tile[i - 1][j - 1] !== 'undefined'
并且得到了

未捕获类型错误:无法读取未定义的属性“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]
未定义,整个表达式将在得到错误之前“短路”

或者,
typeof xyz!='未定义的“
typeof
operator),以防止旧浏览器允许覆盖
undefined
。(编辑:见Adam的帖子)上次我研究这个问题时,Adam Rackis的方法是最佳实践。我尝试了
if(Math.random()<.75&&typeof tile[I+1][j+1]!='undefined'| typeof tile[I-1][j-1]!='undefined'| typeof tile[I-1][j-1]!='undefined';typeof tile[I+1][j-1]!='undefined';first
,但我仍然得到未捕获的TypeError:无法读取未定义的属性“1”或未捕获的TypeError:无法读取未定义的属性“-1”。