Помощь в решении задачки на JS

Ребят, очень нужна ваша помощь в решении задачки на JS. Я являюсь абсолютным новичком и учу JS всего пару недель, поэтому кому-то задачка точно покажется легкой. В общем, условие такое- Машина едет по участку дороги, где некоторые участки дороги могут быть повреждены.

Участок дороги задается в виде массива «roadWithDamages» из десяти логических элементов.

Если элемент внутри массива имеет значение - true, значит участок дороги поврежден.

Поездка машины должна быть реализована в виде цикла, где каждая итерация — один шаг вперед (типа следующий элемент массива).

После каждого шага функция должна выдавать в консоль "Машина переходит к шагу ${i + 1}".

Если автомобиль натыкается на повреждение (логическое значение - true):

  • в первый раз в консоли должно быть написано "Машина повреждена", но мы можем продолжить переход к следующему шагу
  • во второй раз в консоли пишет "Машина сломана" и переход к следующему шагу не происходит.

Пример вывода консоли moveCar([false, false, false, false, true, false, true, false, false, false]);

Машина переходит к шагу 1 Машина переходит к шагу 2 Машина переходит к шагу 3 Машина переходит к шагу 4 Машина повреждена Машина переходит к шагу 6 Машина сломана

Вот моя попытка решения- let roadWithDamages = [true, false, false, false, true, false, true, false, false, false]; for (let i = 0; i < roadWithDamages.length; i++) {

if (i == 4) console.log('The car is damaged');
if (i == 4) continue;
if (i == 6) console.log('The car is broken');
if (i == 6) break;

console.log (`The car goes to step ${i + 1}`)

} Сказали, что плохо и что надо, чтоб работало с любыми данными. В общем, ребят, идей больше никаких нет. Прошу о помощи!


Ответы (1 шт):

Автор решения: SaNFeeD

В целом алгоритм прост.

  • maxDamageCounter - счетчик максимального количества повреждений авто.
  • damageCounter - количество повреждений.

А дальше простой счетчик.

const roadWithDamages = [true, false, false, false, true, false, true, false, false, false];

const maxDamageCounter = 2;
let damageCounter = 0;

for (let step = 0; step < roadWithDamages.length; step++) {
  const road = roadWithDamages[step];
  if (damageCounter < maxDamageCounter) {
    if (road) {
      damageCounter++;
      if (damageCounter >= maxDamageCounter){
        console.log('Машина сломана!');
        break;
      }
      console.log('Машина повреждена');
    } else {
      console.log(`Машина переходит к шагу ${step + 1}`);
    }
  } else {
    console.log('Машина сломана!');
    break;
  }
}

→ Ссылка