본문으로 바로가기

JavaScript 이중 for문 종료, 중첩 반복문 종료하기, label

반복문은 어떠한 언어로 개발하던지 많이 사용합니다.
JavaScript로 개발할 때는 개인적으로 for문 보다는 배열 내장함수를 사용하여 반복을 수행합니다.
그러나 경우에 따라 배열 내장함수가 아닌 for문을 사용해야 하는 경우도 있습니다.

중첩 for문을 종료하는 방법은 여러가지가 있습니다.
그 중 제가 생각할 때 간단한 방법인 label을 이용하는 방식을 작성해보려고 합니다.

label

i, j, k를 순서대로 10번 반복시키면서 k의 값이 3인 경우 반복문을 종료하도록 해보겠습니다.
최종적으로 출력되어야 하는 값은 아래와 같습니다.

i: 0
j: 0
k: 3

중첩반복문 종료 실패 1

let i = 0;
let j = 0;
let k = 0;

for (i = 0; i < 10; i++) {
  for (j = 0; j < 10; j++) {
    for (k = 0; k < 10; k++) {
      if (k === 3) {
        break;
      }
    }
  }
}

console.log(`i: ${i}, j: ${j}, k: ${k}`);

위처럼 코드를 구현하면 83번째 for문만 종료* 됩니다. 따라서 i, j는 10번 모두 반복하게 됩니다.

중첩반복문 종료 실패 2

let i = 0;
let j = 0;
let k = 0;

for (i = 0; i < 10; i++) {
  for (j = 0; j < 10; j++) {
    for (k = 0; k < 10; k++) {
      if (k === 3) {
        i = 10;
        j = 10;
        break;
      }
    }
  }
}

console.log(`i: ${i}, j: ${j}, k: ${k}`);

위처럼 코드를 구현하면 중첩 반복문이 종료가 됩니다.
그러나 1, 2번 for문의 조건을 만족하기 위해 i, j 값이 10이 되었습니다. 즉, i, j 값이 0이 아니기 때문에 실패하였습니다.

중첩반복문 종료 성공

let i = 0;
let j = 0;
let k = 0;

loop1: for (i = 0; i < 10; i++) {
  loop2: for (j = 0; j < 10; j++) {
    loop3: for (k = 0; k < 10; k++) {
      if (k === 3) {
        break loop1;
      }
    }
  }
}

console.log(`i: ${i}, j: ${j}, k: ${k}`);

위처럼 코드를 구현하면 중첩 반복문이 정상적으로 종료가 됩니다.
label로 반복문 이름을 지정해주고 해당 반복문을 종료하였기 때문입니다.

위처럼 label을 이용하면 아주 쉽고 간편하게 중첩 반복문을 종료할 수 있습니다.

참고문헌

• label

반응형