如果您不熟悉这个挑战,请看以下说明:
这段代码通过了6/9个测试,但对于有效的步行路线没有返回
如您所见,我试图表达
我知道可能有其他解决问题的方法,但如果可能的话,我想继续遵循我已经建立的逻辑。
我想知道我的问题是否是我没有正确访问数组中的元素?即这里是否正确获取了数组元素:
这就是应该在这个想象的网格中移动“person”的内容,但显然它什么也没做。我应该尝试哪些其他语法来访问数组中的元素并检查它们是否等于“n”、“e”、“s”和“w”?
https://www.codewars.com/kata/54da539698b8a2ad76000228/train/javascript
你住在卡尔特西亚市,那里的所有道路都是按照完美的网格布局排列的。你提前了十分钟到达约定地点,于是决定趁机去散步。该城市为其居民提供了一款名为“步行生成应用程序”的手机应用程序——每次按下按钮,它会向您发送一个由表示行走方向的单个字母字符串组成的数组(例如['n','s','w','e'])。您总是只向一个方向行走一个街区,并且您知道每穿过一个城市街区需要一分钟,因此请编写一个函数,如果应用程序给出的步行路线恰好需要十分钟(您不想早到或晚到!)并且当然能将您带回起点,则返回true。否则返回false。到目前为止,我尝试了:
function isValidWalk(walk) {
//initiate person starting point
let person = [0, 0]
//establish what the ending point must be
let finalDestination = [0, 0]
let north = [0, 1]
let east = [1, 0]
let south = [0, -1]
let west = [-1, 0]
//as long as the length of the array is 10 or less, continue walk
for (let i = 0; i <= 10; i++) {
//if the letter in the array is "n", move north
if (walk[i] === "n") {
person + north;
}
//if the letter in the array is "e", move east
if (walk[i] === "e") {
person + east;
}
//if the letter in the array is "s", move south
if (walk[i] === "s") {
person + south;
}
//if the letter in the array is "w", move west
if (walk[i] === "w") {
person + west;
}
}
if (person === finalDestination) {
return true;
}
else {
return false;
}
}
这段代码通过了6/9个测试,但对于有效的步行路线没有返回
true
。如您所见,我试图表达
isValidWalk
函数应该在person
的位置在步行结束时等于finalDestination
变量时返回true。我知道可能有其他解决问题的方法,但如果可能的话,我想继续遵循我已经建立的逻辑。
我想知道我的问题是否是我没有正确访问数组中的元素?即这里是否正确获取了数组元素:
walk[i]
? if (walk[i] === "n") {
person + north;
}
这就是应该在这个想象的网格中移动“person”的内容,但显然它什么也没做。我应该尝试哪些其他语法来访问数组中的元素并检查它们是否等于“n”、“e”、“s”和“w”?