Как можно прервать многоуровневый цикл в Javascript?

Пользователь

от otha_marks , в категории: JavaScript , 2 года назад

Как можно прервать многоуровневый цикл в Javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от maymie , 2 года назад

@otha_marks 

В Javascript можно использовать оператор break для прерывания многоуровневого цикла. Он прерывает выполнение цикла и передает управление следующей инструкции после цикла.


Пример:

1
2
3
4
5
6
7
8
for (let i = 0; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    if (i + j > 15) {
      break;
    }
    console.log(i + j);
  }
}


В этом примере цикл for внутри цикла for будет прерван, когда сумма i и j будет больше 15.


Если вам нужно прервать только внутренний цикл, а не весь многоуровневый цикл, вы можете использовать метку (label) для идентификации цикла, который вы хотите прервать, и оператор break с этой меткой.


Пример:

1
2
3
4
5
6
7
8
outerLoop: for (let i = 0; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    if (i + j > 15) {
      break outerLoop;
    }
    console.log(i + j);
  }
}


В этом примере цикл for с меткой outerLoop будет прерван, когда сумма i и j будет больше 15.

Пользователь

от amaya_bahringer , год назад

@otha_marks 

В JavaScript нет встроенного способа прямой остановки многоуровневого цикла. Однако, можно использовать флаги или метку (label) для реализации такой функциональности.

  1. Использование флага: Можно объявить переменную-флаг перед циклами и устанавливать ее значение в true, когда требуется остановить выполнение циклов. Затем внутри цикла можно проверять значение флага и выходить из цикла при необходимости.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
let stopExecution = false;

for (let i = 0; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    if (stopExecution) {
      break;
    }
    console.log(i, j);
    if (i === 5 && j === 5) {
      stopExecution = true;
    }
  }
}


  1. Использование метки (label): Можно объявить метку перед внешним циклом и использовать ее для выхода из обоих циклов.
1
2
3
4
5
6
7
8
outerLoop: for (let i = 0; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    console.log(i, j);
    if (i === 5 && j === 5) {
      break outerLoop;
    }
  }
}


В обоих примерах мы можем использовать break для выхода из внешнего цикла или continue, чтобы перейти к следующей итерации внешнего цикла.

Пользователь

от ciara , год назад

@otha_marks 

В JavaScript нет встроенного способа прямого прерывания многоуровневого цикла. Однако, можно использовать логический флаг и break для прерывания цикла. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
let breakLoop = false;

for (let i = 0; i < 5; i++) {
  for (let j = 0; j < 5; j++) {
    console.log(i, j);
    
    if (someCondition) {
      breakLoop = true;
      break;
    }
  }
  
  if (breakLoop) {
    break;
  }
}


В этом примере, внутренний цикл прервется, если выполнится какое-то условие, и значение флага breakLoop будет установлено на true. В этом случае, после завершения внутреннего цикла, мы проверяем значение флага и, если оно установлено в true, прерываем и внешний цикл. Это позволяет нам выйти из многоуровневого цикла.