CodeWars Take a Ten Minute Walk Kata JavaScript代码错误排查求助
代码存在的问题:
- 长度判断逻辑提前返回,导致后续坐标校验完全不会执行。只要
walk长度是10就直接返回true,完全没有校验是否回到起点,这是无法通过对应测试的核心原因。 - 循环中第一个判断误用赋值运算符
=而非相等比较运算符===,会直接修改遍历的数组元素值,导致判断逻辑完全错误。 - 循环内每个条件分支都加了
return,会导致第一次遍历就直接退出函数,根本无法统计完所有方向的步数。 - 循环变量
i未声明直接使用,会隐式创建全局变量,属于不规范写法。
修正后的代码:
function isValidWalk(walk) { // 长度不符合直接返回false if (walk.length !== 10) return false; let north = 0, south = 0, east = 0, west = 0; // 统计各方向步数 for (let i = 0; i < walk.length; i++) { if (walk[i] === 'n') north++ else if (walk[i] === 's') south++ else if (walk[i] === 'e') east++ else if (walk[i] === 'w') west++ } // 判断是否回到起点 return north === south && east === west; }
内容的提问来源于stack exchange,提问作者KriRadica
相关产品推荐
相关产品推荐

