想象一下以下情况:
var array = new Array ( [0,0,0,0], [0,0,1,0], [0,0,0,0] );
var x = 0; var y = 0;
if(array[y][x]) {
// x and y can be any integer
// code should execute only for array[1][2]
}
当x
和y
引用数组中存在的项时,一切都很好。否则,脚本终止。显然这不是我想要的行为 - 是否可以安全地引用Javascript多维数组?
答案 0 :(得分:1)
您需要检查引用的属性是否存在于数组的每个级别:
if(array[y] && array[y][x]) {
// x and y can be any integer
// code should execute only for array[2][1]
}
答案 1 :(得分:0)
您可以使用in
关键字检查数组中是否存在第y个元素,以及该元素是否具有第x个元素作为初步检查:
if (y in array && x in array[y] && array[y][x]) {...
Javascript数组不是多维的,因为它们是复合/锯齿状的。您也可以使用Array.length
,但这依赖于作为数组的对象,这是我们正在检查的内容的一部分,因此它使检查变得复杂。
答案 2 :(得分:0)
比其他答案更冗长:
var array = [ [0,0,0,0], [0,0,1,0], [0,0,0,0] ];
var x = 0; var y = 0;
if(array.hasOwnProperty(y) && array[y].hasOwnProperty(x) && array[y][x] !== 0) {
// x and y can be any integer
// code should execute only for array[2][1]
}
...但是这一项不会增加Array.prototype
。
此外,明确测试零等于使其更具可读性,恕我直言。 (补偿前述条件的可读性降低...... :-P)