【发布时间】:2019-08-17 06:07:22
【问题描述】:
如果您不熟悉此挑战,请参阅以下说明:
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 进行有效的步行。
如您所见,我试图说如果person 的位置等于他们步行结束时的finalDestination 变量,则isValidWalk 函数应该返回true。
我知道可能还有其他方法可以解决此问题,但如果可能的话,我想继续遵循我已建立的逻辑。
我想知道我的问题是否是我没有正确访问数组中的元素? IE。 walk[i] 在这里正确获取数组元素吗?
if (walk[i] === "n") {
person + north;
}
这就是应该在这个假想的网格上移动person 的原因,但显然它没有做任何事情。我应该尝试访问数组中的元素并检查它们是否等于“n”、“e”、“s”和“w”的其他语法?
【问题讨论】:
-
他们没有说笛卡尔位于哪个表面上,但假设它是一个平面,则无需操作坐标,只需确保字符串具有相同数量的“n”和“s”和“e”和“w”。
标签: javascript arrays function for-loop