Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 我是否访问多维数组上的未定义?未捕获类型错误:无法读取属性'-1';未定义的_Javascript - Fatal编程技术网

Javascript 我是否访问多维数组上的未定义?未捕获类型错误:无法读取属性'-1';未定义的

Javascript 我是否访问多维数组上的未定义?未捕获类型错误:无法读取属性'-1';未定义的,javascript,Javascript,多维数组的访问如何在未定义的值上工作 我的第三条线怎么了 var board = [ [0, 0, 0], [0, 1, 1] ]; console.log(board[0][0]); // 0 console.log(board[0][-1]); // undefined, What's going on here and why? console.log(board[-

多维数组的访问如何在未定义的值上工作

我的第三条线怎么了

  var board = [

            [0, 0, 0],
            [0, 1, 1]
        ];

        console.log(board[0][0]);  // 0
        console.log(board[0][-1]); // undefined, What's going on here and why? 
        console.log(board[-1][1]);  // uncaught typerror: cannot read property -1 of undefined - Why is this error thrown?
javascript中没有“真正的”多维数组。您所拥有的只是一个数组数组

访问内部属性(您的第二个示例)的不存在属性会产生未定义的

访问外部属性的不存在属性(您的第三个示例)也会产生
未定义的
,但您希望始终得到一个内部数组,您可以在该数组上访问属性
0
,当属性
未定义时会引发异常

除此之外,永远不要访问数组的负整数属性,如果可能,也不要访问超出数组长度的索引。

javascript中没有“真实”多维数组。您所拥有的只是一个数组数组

访问内部属性(您的第二个示例)的不存在属性会产生未定义的

访问外部属性的不存在属性(您的第三个示例)也会产生
未定义的
,但您希望始终得到一个内部数组,您可以在该数组上访问属性
0
,当属性
未定义时会引发异常

除此之外,永远不要访问数组的负整数属性,如果可能,也不要访问超出数组长度的索引。

在第二行:

board[0]->[0,0,0]

因此,通过执行
board[0][1]
,您是在说,“给我
[0,0,0]
的元素-1”,这是未定义的

在你的第三行:

board[-1]->未定义

因此,通过执行
board[-1][1]
,您的意思是,“给我
未定义的元素1
”,因为未定义的东西没有属性,这会抛出一个错误。

在您的第二行:

board[0]->[0,0,0]

因此,通过执行
board[0][1]
,您是在说,“给我
[0,0,0]
的元素-1”,这是未定义的

在你的第三行:

board[-1]->未定义



因此,通过执行
board[-1][1]
,您的意思是,“给我
未定义的
元素1”,因为未定义的东西没有属性,这会抛出一个错误。

因此,如果我检查一个board的每个值,并且我需要检查以查看相邻元素(左上、右上等)是否处于绑定状态,对此我可以使用什么策略?您所说的“访问属性0”是什么意思?测试索引号本身是否在绑定中,而不是属性是否存在。例如,
x>=0&&x=0&&y
arr[0]
是一个名为
0
-类似于
obj[“value”]
。数组与JavaScript中的对象在这方面没有什么不同。因此,基本上在我的第三行中,我试图获取这个值-未定义的[“someProperty”]?因此,如果我检查一块板上的每个值,我需要检查邻居(左上、右上等)是否处于绑定状态,对此我可以使用什么策略?您所说的“访问属性0”是什么意思?测试索引号本身是否在绑定中,而不是属性是否存在。例如,
x>=0&&x=0&&y
arr[0]
是一个名为
0
-类似于
obj[“value”]
。数组与JavaScript中的对象在这方面没有什么不同。因此,基本上在我的第三行中,我试图得到这个值-未定义的[“someProperty”]?值得思考的是:您还可以表示如下多维数组<代码>变量板={};电路板[[0,0]]=0;董事会[[0,1]]=1
这导致
{'0,0':0,'0,1':1}
@timothyshiels:不,最好不要(出于各种原因)。别把新手和这混淆了@Bergi我只在少量的浏览器代码中使用了JS。如果你可以在评论(或指向链接)中简明扼要地说出来,那么它不好的原因是什么?我从来没有真正使用过它——只是当场想到了。@TimothyShields:没有链接,但是:
不是数组(较慢),它没有维度,当访问
板[[0,1]]
时,你会隐式地将
[0,1]
字符串化为
“0,1”
,这相当令人困惑,并可能导致错误的信念。当然,我不否认在某些情况下,这样的结构可能没有用处,但必须经过仔细考虑。@Bergi好的,谢谢,尽管我知道所有这些。:)对于稀疏向量或矩阵之类的东西,这可能是有意义的,但对于密集多维数组,这似乎并不好<代码>变量板={};电路板[[0,0]]=0;董事会[[0,1]]=1
这导致
{'0,0':0,'0,1':1}
@timothyshiels:不,最好不要(出于各种原因)。别把新手和这混淆了@Bergi我只在少量的浏览器代码中使用了JS。如果你可以在评论(或指向链接)中简明扼要地说出来,那么它不好的原因是什么?我从来没有真正使用过它——只是当场想到了。@TimothyShields:没有链接,但是:
不是数组(较慢),它没有维度,当访问
板[[0,1]]
时,你会隐式地将
[0,1]
字符串化为
“0,1”
,这相当令人困惑,并可能导致错误的信念。当然,我不否认在某些情况下,这样的结构可能没有用处,但必须经过仔细考虑。@Bergi好的,谢谢,尽管我知道所有这些。:)对于稀疏向量或矩阵之类的东西,这可能是有意义的,但对于密集的多维数组,这似乎并不好。