问题描述
我找不到我犯的一些错误,无论是标点符号还是逻辑错误。 当我必须将流动站坐标推入并将新位置更新到流动站对象中时,就会出现错误。
以下是指南和代码:我们想知道到目前为止我们的漫游车在哪里。在流动站对象上创建一个属性,该属性包含其所处位置的坐标。此属性将是一个数组,您可以将其称为travelLog。
每次移动后,将流动站先前所在的位置的坐标推入travelLog数组。在流动站完成移动之后,打印出流动站所经过的所有位置。(这最后一部分我仍然必须对其进行编码)
let myRover = {
direction: 'N',x: 0,y: 0,travelLog = [{
x: 0,y: 0
}]
}
// ======================
function turnLeft(rover) {
console.log('turnLeft was called!');
switch (rover.direction) {
case 'N':
rover.direction = 'W';
break;
case 'W':
rover.direction = 'S';
break;
case 'S':
rover.direction = 'E';
break;
case 'E':
rover.direction = 'N';
break;
}
}
function turnRight(rover) {
console.log('turnRight was called!');
switch (rover.direction) {
case 'N':
rover.direction = 'E';
break;
case 'W':
rover.direction = 'N';
break;
case 'S':
rover.direction = 'W';
break;
case 'E':
rover.direction = 'S';
break;
}
}
function moveForward(rover) {
console.log('moveForward was called');
switch (rover.direction) {
case 'N':
rover.x++;
break;
case 'W':
rover.y--;
break;
case 'S':
rover.x--;
break;
case 'E':
rover.y++;
break;
}
console.log(`The rover has position: x= ${rover.x},y= ${rover.y};`)
let newPosition = x: $ {
rover.x
},y: $ {
rover.y
};
rover.travelLog.push(newPosition);
}
function command(rover,orders) {
for (let i = 0; i < orders.length; i++) {
let order = orders[i];
switch (order) {
case 'f':
moveForward(rover,order);
break;
case 'r':
turnRight(rover,order);
break;
case 'l':
turnLeft(rover,order);
break;
}
}
}
解决方法
let myRover = {
direction: 'N',x: 0,y: 0,travelLog = [{
x: 0,y: 0
}]
应该是
let myRover = {
direction: 'N',travelLog: [{ //not = but :
x: 0,y: 0
}]
,
您在这里也有问题:
absolute
我认为,您只是在尝试创建一个新对象:
let newPosition = x: $ {
rover.x
},y: $ {
rover.y
};
我强烈建议您阅读有关“对象文字符号”和“字符串模板文字”的更多信息。您似乎以混淆编译器的方式混合了这两种语法。