Looping backward and loops in loop, while loop

Juyeon Lee·2022년 1월 11일
0

Looping Backward

이번에는 loop을 거꾸로 실행하는 방법을 알아보자.

const jonas = [
  "Jonas",
  "Lee",
  2037 - 1991,
  "teacher",
  ["Michael", "Peter", "Steven"],
  true,
];

for (let i = jonas.length - 1; i >= 0; i--) {
  console.log(i, jonas[i]);
}

거꾸로 loop을 해주는 것이므로, 배열의 마지막 인덱스인 jonas.length - 1을 시작으로 설정해준다. 제일 첫 번째 인덱스 0이 이 경우에는 마지막이 되므로 i >= 0 조건을 사용하고, 거꾸로 가야 하므로 i--를 적어준다. 이렇게 하면 배열의 마지막 요소부터 첫 번째 요소까지 순서대로 접근할 수 있다.

Loops in Loop

Loop문 안에 또 다른 loop문을 넣을 수도 있다. 아래의 코드를 보자.

for (let exercise = 1; exercise < 4; exercise++) {
  console.log(`--------Starting exercise ${exercise}`);

  for (let rep = 1; rep < 6; rep++) {
    console.log(` Exercise ${exercise} : Lifting weight reptition ${rep}`);
  }
}

이렇게 코드를 쓰면, 첫 번째 loop문의 첫 번째 반복이 시작된 후, 그 안의 두 번째 loop문이 반복된 다음, 첫 번째 loop문의 두 번째 반복이 시작된다.

While Loop

while을 써서 loop하는 while loop도 있다.

for (let rep = 1; rep <= 10; rep++) {
  console.log(`Lifting weights repetition ${rep}`);
}

let rep = 1;
while (rep <= 10) {
  console.log(`WHILE:Lifting weights repetition ${rep}`);
  rep++;
}

위의 코드처럼 조건을 괄호 안에 써주고, 그 조건이 충족되는 동안 loop가 실행된다. while loop는 정확히 몇 번 loop를 실행해야 할지 알 수 없을 때 유용하다. 예를 들어

let dice = Math.trunc(Math.random() * 6) + 1;
console.log(dice);

while (dice !== 6) {
  console.log(`You rolled a ${dice}`);
  dice = Math.trunc(Math.random() * 6) + 1;
  if (dice === 6) console.log("Loop is about to end...");
}

이렇게 주사위를 던져서 6이 나올 때까지 반복할 때, 6이 몇 번 던졌을 때 나올지 모르므로 while loop를 사용할 수 있다.

dice = Math.trunc(Math.random() * 6) + 1; 이 코드를 while loop 안에 넣어주는 이유는, 함수 밖의 let dice = Math.trunc(Math.random() * 6) + 1;만 사용하면, 처음에 6이 나오지 않을 경우 while 문이 무한 loop가 될 수 있기 때문이다. while 문 안에서 주사위 숫자를 다시 설정해 줘야, 6이 나오지 않을 때 다시 while 문의 처음으로 돌아가 무한 loop에서 벗어날 수 있다.

0개의 댓글