Javascript Codewars 错误迷宫赛跑者
Javascript Maze Runner on Codewars error
我一直在努力完成代码大战,我遇到了迷宫运行ner (https://www.codewars.com/kata/maze-runner/train/javascript) 我被难住了大约 2 天!
function mazeRunner(maze, directions) {
//find start value
var x = 0; //x position of the start point
var y = 0; //y position of the start point
for (var j = 0 ; j < maze.length ; j++){
if (maze[j].indexOf(2) != -1){
x = j;
y = maze[j].indexOf(2)
}
} // end of starting position forloop
console.log(x + ', ' + y)
for (var turn = 0 ; turn < directions.length ; turn++){
if (directions[turn] == "N"){
x -= 1;
}
if (directions[turn] == "S"){
x += 1;
}
if (directions[turn] == "E"){
y += 1;
}
if (directions[turn] == "W"){
y -= 1;
}
if (maze[x][y] === 1){
return 'Dead';
}else if (maze[x][y] === 3){
return 'Finish';
}
if (maze[x] === undefined || maze[y] === undefined){
return 'Dead';
}
}
return 'Lost';
}
当我运行这个时,它适用于大多数情况,但是在最后一个情况下我得到以下错误
TypeError: Cannot read property '3' of undefined
at mazeRunner
at /home/codewarrior/index.js:87:19
at /home/codewarrior/index.js:155:5
at Object.handleError
如有任何帮助,我们将不胜感激!我正在为这个而烦恼!
你的解决方案的问题是,移动之后,你只是检查maze[x][y]
的值
在失败的测试中,maze[x]
会在某个点undefined
(向南移动一段时间)。我想在同一点 y
将是 3
,因此错误 Cannot read property '3' of undefined
为避免这种情况,您应该在尝试访问坐标之前向上移动测试未定义的代码:
// move this as first check
if (maze[x] === undefined || maze[y] === undefined){
return 'Dead';
}
我一直在努力完成代码大战,我遇到了迷宫运行ner (https://www.codewars.com/kata/maze-runner/train/javascript) 我被难住了大约 2 天!
function mazeRunner(maze, directions) {
//find start value
var x = 0; //x position of the start point
var y = 0; //y position of the start point
for (var j = 0 ; j < maze.length ; j++){
if (maze[j].indexOf(2) != -1){
x = j;
y = maze[j].indexOf(2)
}
} // end of starting position forloop
console.log(x + ', ' + y)
for (var turn = 0 ; turn < directions.length ; turn++){
if (directions[turn] == "N"){
x -= 1;
}
if (directions[turn] == "S"){
x += 1;
}
if (directions[turn] == "E"){
y += 1;
}
if (directions[turn] == "W"){
y -= 1;
}
if (maze[x][y] === 1){
return 'Dead';
}else if (maze[x][y] === 3){
return 'Finish';
}
if (maze[x] === undefined || maze[y] === undefined){
return 'Dead';
}
}
return 'Lost';
}
当我运行这个时,它适用于大多数情况,但是在最后一个情况下我得到以下错误
TypeError: Cannot read property '3' of undefined
at mazeRunner
at /home/codewarrior/index.js:87:19
at /home/codewarrior/index.js:155:5
at Object.handleError
如有任何帮助,我们将不胜感激!我正在为这个而烦恼!
你的解决方案的问题是,移动之后,你只是检查maze[x][y]
在失败的测试中,maze[x]
会在某个点undefined
(向南移动一段时间)。我想在同一点 y
将是 3
,因此错误 Cannot read property '3' of undefined
为避免这种情况,您应该在尝试访问坐标之前向上移动测试未定义的代码:
// move this as first check
if (maze[x] === undefined || maze[y] === undefined){
return 'Dead';
}