어떤 함수에 정수인 숫자를 인자로 받아 그 숫자를 뒤집어서 return
ex) 1234 => 4321 / -1234 => -4321 / 1230 => 321
const reverse = x => { // 1 const changeString = x.toString(); // 2 const arrayString = changeString.split(''); // 3 if (x < 0) { arrayString.shift('-') // 7 const reverseString = arrayString.reverse(); // 4 const joinString = reverseString.join(''); // 5 const changeNumber = Number(joinString) * -1 // 8 return changeNumber; } else { const reverseString = arrayString.reverse(); // 4 const joinString = reverseString.join(''); // 5 const changeNumber = Number(joinString); // 6 return changeNumber; } }
과정 하나하나를 쪼개서 어떤 식으로 동작이 이뤄질지를 생각했다.
그러다 보니 너무 긴 코드가 나왔고,
받는 인자가 음수인 상황을 고려하다 보니 똑같은 코드가 중복되는 경우가 나왔지만,
결국 결과값은 올바르게 도출할 수 있었다.
const reverse = x => { let reverseNum = parseInt(x.toString().split('').reverse().join(''))*Math.sign(x); return reverseNum; }
하나의 인자를 갖고 여러 메소드를 적용하는 방법에 대해
인지하지 못하고 있던 부분이 있었는데, 이런 방법을 통해서 작성하면
코드의 길이도 줄이고, 빠른 결과값도 도출할 수 있겠다.
코드가 적용된 순서를 살펴보자면 이렇다.
x.toString()
: x 를 문자로 변경.split('')
: 배열에 글자 하나하나 삽입.reverse()
: 배열의 글자 순서를 뒤바꿔 줌.join('')
: 배열의 모든 글자를 하나로 합침parseInt()
: 문자를 분석해 특정 진수값의 정수를 반환Math.sign(x)
: x 의 부호를 반환 (양수면 +1 / 음수면 -1)parseInt()
의 경우는 어떤 문장의 특정 진수값의 정수를 반환한다고 했는데,
기본값이 10진수가 아니기 때문에 문자가 섞인 문장이라고 한다면,
원하는 진수값을 표기해 주는 것이 좋겠다.