Task
Complete function splitOddAndEven, accept a number n(n>0), return an array that contains the continuous parts of odd or even digits.
Please don't worry about digit 0, it won't appear ;-)
Examples
splitOddAndEven(123) === [1,2,3]
splitOddAndEven(223) === [22,3]
splitOddAndEven(111) === [111]
splitOddAndEven(13579) === [13579]
splitOddAndEven(135246) === [135,246]
splitOddAndEven(123456) === [1,2,3,4,5,6]
(요약)주어진 숫자를 짝수끼리, 홀수끼리만 연결되게 분리해라.
function splitOddAndEven(n) { n = String(n); let index = 0; const answer = [n[index]]; let oddEvenCheck = !(n[index] % 2); for(let i = 1; i < n.length; i++) { if(oddEvenCheck ^ (n[i] % 2)) { answer[index] += n[i]; } else { answer.push(n[i]); index++; oddEvenCheck = !oddEvenCheck; } } return answer.map(str => str * 1); }
문자열로 만들어서
index
접근을 하기위해 주어진 숫자를 문자열로 먼저 변환.첫 숫자를 배열에 넣고, 그 값이 짝수면
oddEvenCheck
는true
, 홀수면false
.반복문을 돌면서 이전 숫자와 지금 숫자가 둘 다 짝수나 홀수면
if
, 홀수와 짝수가 붙어 있으면else
.마지막에 문자열을 숫자로 변경하고
return
.