如何检查未定义的二维数组值而不会出现“无法检查未定义的属性”错误
2019-11-19
128
如您所见,在创建长度为 [20][20] 的二维数组后,有一个 if 语句试图检查数组值是否为“未定义”;然而,不知何故,我一直收到错误提示“Uncaught TypeError: Cannot read property '0' of undefined”。 那么,有没有办法避免出错并检查是否有值呢?
//If there is a more efficiency way to build these loops, then I'll be glad to see it
let map = [];
let savedPoints = [];
let value = 0;
let something = 0; // testing values
let somethingelse = 0;
for(let i = 0 ; i < 20; i++) {
map[i] = [];
savedPoints[i] = [];
let pointx = i + something;
for(let j = 0; j < 20; j++) {
let pointy = j + somethingelse;
savedPoints[i][j] = {pointx, pointy};
map[i][j] = value;
}
}
let x = 110;
let y = 0;
//this will give error
if(typeof map[x+1][y] !== 'undefined') {
//do something...
}
3个回答
你可以试试这个:
if (typeof map[x+1] !== 'undefined' && typeof map[x+1][y] !== 'undefined') {
//code here
}
Jon
2019-11-19
您可以使用
if(map[x+1]) {
//do something...
}
检查第一个数组,并使用
if(map[x+1]) {
if(map[x+1][y]) {
//do something...
}
}
检查第二个数组
dida nurdiansyah
2019-11-19
if (map[x+1] && map[x+1][y]) { ... }
您不需要
typeof
映射,它只能包含数组。如果
map[x+1]
等于 false,则不会检查
map[x+1][y]
。看起来不太好。等待新标准中的链式检查。
Crutch Master
2019-11-19