개발하는 너구리

TIL-24.04.22 본문

TIL

TIL-24.04.22

너구리개발자 2024. 4. 22. 22:53

 

 

문제점

반복문을 사용하여 코드의 흐름을 제어할때 주의할점을 발견했다.

보통 반복문은 for문 혹은 map( ), forEach( ) 등을 사용하여 코드의 흐름을 제어하는데, 반복 중간에 반복을 중단하고 그때까지 변수에 담겨있는 값을 꺼내와야하는 경우가 있다.

예를 들면,

정수로 이루어진 문자열 n_str이 주어질 때,
n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(n_star) { 
  let array = n_star.split('')
  array.map((value,index) => {
    if(v==='0'){
      array.shift()
    }else {
      break;
    }
  })
  return array.join('');
}

 

코드를 반복할때, map( )를 사용했는데 배열의 원소가 '0'이면 배열에서 삭제하고, '0'이 아닌 문자를 만나면 반복을 중지하는 코드이다.

코드를 실행해봤는데 SyntaxError: Illegal break statement 라는 에러가 발생했다.

반복 중간에 반복을 중지시키려면 break라는 키워드로 중지시키는데 왜 안되는지 이유를 몰랐다. 그래서 이에 관한 문제를 구글링하던 중

map( ) 와 forEach( )는 throw(예외)를 발생시키지 않는 한, 중간에 반복을 종료할수없다. 라는 사실을 알게되었다.

내가 원하던 바대로 하려면 for문을 사용한 반복을 수행하면된다.

 

function solution(n_str) {
  let array = n_str.split('');

  for (let i = 0; i < array.length; i++) {
    if (array[0] === '0') {
      array.shift();
    } else {
      break;
    }
  }
  return array.join('');
}

 

for문은 continue, break로 반복을 제어 할수있다.

 

 

 

 

알게된점

같은 기능을 하는 함수들이더라도 함수마다 주의사항이 존재할수있다. 에러를 맞이하기 전에 이러한 사항들을 미리 아는 것도 중요하다.

'TIL' 카테고리의 다른 글

TIL-24.04.24  (0) 2024.04.24
TIL-24.04.23  (0) 2024.04.23
TIL-24.04.19  (0) 2024.04.19
TIL-24.04.18  (0) 2024.04.18
TIL-24.04.17  (0) 2024.04.17