[JS] 숫자 자리수 맞추기

개발을 하다보면 숫자를 쓸 때 1, 2, 3, 4가 아닌 01, 02, 03, 04 로 사용하는 경우가 종종 있다. 파일명에 사용되는 숫자라던지 아니면 화면에 카운트 되는 숫자라던지…

그래서 1을 01로 표현하고 싶을 경우 간단한 함수 하나를 제작하여 사용하면 된다.

function digits( n, l ) {
  var _result;
  n += '';
  if( n.length < l ) {
    _result = new Array( l - n.length + 1 ).join( '0' ) + n;
  } else {
    _result = n; 
  }
  return _result;
}

함수는 자리수를 변경할 ‘숫자’와 ‘자리수’를 매개변수로 받는다.

먼저 숫자를 문자열로 변환해준다.

원하는 자리수에서 기존 숫자의 자리수를 빼준(모자란 자리수) 만큼의 길이보다 1칸 더 많은 길이를 가진 배열을 만들어주고 배열을 값 사이에 ‘0’을 넣어서 합쳐준다.

예를 들어서 12를 5자리수로 만들고 싶다고 치면 00012가 될 것이다.

그럼 0이 3개가 필요하고 길이가 4인 배열을 값 사이에 0을 넣어서 합치게 되면

'빈값' 0 '빈값' 0 '빈값' 0 '빈값'

결과는 ‘000’이 된다. 그래서 모자란 자리수에 1을 더한 길이의 배열이 필요한것이다.

모자란 만큼 0을 만든 값을 기존 숫자 앞에 붙여주면 끝.

다른 방법도 있는데 숫자 앞에 ‘00000000000000000000’ 이렇게 많은 0을 붙여준 다음 뒤에서부터 자리수만큼 자르면 된다.

둘 중 어떤 방법이 더 성능면에서 유리한지는 잘 모르겠으니 성능이 중요하다면 알아서 검색해보도록…

위 함수는 원리 설명을 위해 풀어서 쓴거고 약식 조건문으로 한줄로 해결도 가능하다.

function digits( n, l ) {
  return String( n ).length < l ? new Array( l - String(n).length + 1 ).join( '0' ) + n : n;
}

고열

40도가 넘는 열은 처음이었다. 몸을 바르르 떨었다.
응급실에 가서 일단 열을 내리기 위해 링겔을 맞았다. 피검사와 소변검사를 해야겠지만 일단 열만 내리고 아침까지 지켜보기로 했다.

아침에 열이 내리지 않아서 결국 병원에서 검사를 했다. 감기는 아닌 것 같고 바이러스 감염이 의심된다고한다. 구내염이 유행인데 구내염일수도 있다고 입원치료를 권했다. 입원만은 하고싶지 않아 일단 집에 데려왔는데 저녁까지 열이 계속되어 결국 입원을 했다.

응급실에 갔을 때부터 검사를 했어야하는 것 아닌지… 내 판단으로 치료가 늦어지는 것 같아 마음이 편치가 않다.