我有一些任务要解决,当我们需要从命令中更新坐标数组时,就像这样。当forward - y加1,back - y减1,right - x加1和left - x减1时。但是这里有些东西不能正常工作。
function getLocation(coordinates, commands) {
// write code here
let x = coordinates[0]
let y = coordinates[1]
//let newCoordinates = [];
for (let i = 0; i < commands.length; i++) {
if (i === 'forward' ) {
y += 1 ;
}
if (i === 'back') {
y -= 1 ;
}
if (i === 'right') {
x += 1;
}
if (i === 'left') {
x -= 1;
}
}
//newCoordinates.push(x, y)
return coordinates;
}
console.log(getLocation([0, 0], ['forward', 'forward', 'left']))
字符串
3条答案
按热度按时间uqdfh47h1#
在循环时,你没有访问
commands
数组中的值。此时你正在比较i
是'forward'
,'back'
还是其他命令。您应该做的是通过访问值.
commands[i] === 'forward'
来比较commands
数组中的每个值,依此类推。返回
coordinates
数组不会给予更新后的值,因为修改x
和y
不会更新coordinates
数组中的值。解决这个问题的最简单方法是返回一个新数组,其中包含x
和y
,如下所示:return [x, y];
字符串
我还冒昧地修改了你的函数,使用destructuring assignment和rest parameter作为例子,说明如何以不同的方式实现函数。不知道这是否对你有帮助,但我认为你还在学习,这可能会扩大你的知识基础。
型
bvn4nwqk2#
你正在使用索引来检查命令,你应该像这样在条件语句中使用数组的值
字符串
7z5jn7bk3#
考虑下面的例子。
个字符
这是一个非常好的
switch()
用法。您不需要分隔坐标数组的各个部分;您可以使用运算符++
和--
操作数组中的值。你可以在jQuery中使用
$.each()
,也可以使用for()
循环。在这种情况下,两者都没有优势。