Массив, который я пробовал перебрать, называется commands
в объекте ниже. Я дал ему ряд команд, которые я определил в функциях ниже. И мой цикл for находится в нижней функции под названием commandsArray()
. Я пытаюсь вызвать commandsArray()
в программе, чтобы выполнить цикл над массивом, но он не работает.Как перебирать элементы в массиве Javascript с циклом for, выполняя каждый элемент отдельно, прежде чем перейти к следующему (до завершения)?
Я не уверен, что я делаю неправильно. Я определенно хотел бы использовать for-loop здесь и попытаться сделать эту работу, если это возможно. Я новичок в Javascript.
var myRover = {
position: [[0],[0]],
direction: 'N',
roverDirections: ['N', 'E', 'S', 'W'],
marsGrid: [[0], [0]],
obstacles: [],
commands: ['f','f', 'f', 'r', 'f', 'f', 'l', 'f', 'f', 'f', 'b', 'b']
};
// MOVE FORWARD & BACKWARD COMMANDS
function move(command) {
if (command === 'f') { //FORWARD
switch(myRover.direction) {
case 'N':
myRover.position[0]++;
break;
case 'E':
myRover.position[1]++;
break;
case 'S':
myRover.position[0]--;
break;
case 'W':
myRover.position[1]--;
break;
}
}
else if (command === 'b') { //BACKWARD
switch(myRover.direction) {
case 'N':
myRover.position[0]--;
break;
case 'E':
myRover.position[1]--;
break;
case 'S':
myRover.position[0]++;
break;
case 'W':
myRover.position[1]++;
break;
}
}
return myRover.position;
}
// TURN COMMANDS
function turn(command){
if (command === 'l') { //TURNING LEFT
switch (myRover.direction) {
case 'N':
myRover.direction = 'W';
break;
case 'E':
myRover.direction = 'N';
break;
case 'S':
myRover.direction = 'E';
break;
case 'W':
myRover.direction = 'S';
break;
}
}
if (command === "r") { //TURNING RIGHT
switch (myRover.direction) {
case 'N':
myRover.direction = 'E';
break;
case 'E':
myRover.direction = 'S';
break;
case 'S':
myRover.direction = 'W';
break;
case 'W':
myRover.direction = 'N';
break;
}
}
return myRover.direction;
}
// Executing on a Series of Commands From the Commands Array
function commandsArray() {
var commandsLength = myRover.commands.length;
for (var i = 0; i <= commandsLength; i++) {
if (commandsLength[i] === 'f') {
move('f');
}
else if (commandsLength[i] === 'b') {
move('b');
}
if (commandsLength[i] === 'r') {
turn('r');
}
else if (commandsLength[i] === 'l') {
turn('l');
}
return myRover.position;
}
что значит "не работает" означает? Можете ли вы поделиться сообщением об ошибке? –
«Это не работает» не описывает, что происходит. Быть конкретной! – nem035
'но это не работает' каким образом. Что вы ожидаете? Что вы наблюдаете? Есть ошибки в консоли –