이번 문제에서는 숫자로 이루어진 배열을 인자로 받아, 각 숫자의 자릿수를 내부적으로 특정 순서(여기서는 오름차순)대로 재배열하는 JavaScript 함수를 작성해야 합니다.
예를 들어, 다음과 같은 배열이 있다고 가정해 보겠습니다 −
const arr = [543, 65, 343, 75, 567, 878, 87];
그렇다면 출력 결과는 다음과 같아야 합니다 −
const output = [345, 56, 334, 57, 567, 788, 78];
예제
다음은 해당 기능을 구현한 전체 코드입니다 −
const arr = [543, 65, 343, 75, 567, 878, 87];
const ascendNumber = num => {
const numArr = String(num).split('').map(el => +el);
numArr.sort((a, b) => a - b);
return numArr.join('');
};
const sortDigits = arr => {
const res = [];
for(let i = 0; i < arr.length; i++){
res.push(ascendNumber(arr[i]));
};
return res;
};
console.log(sortDigits(arr));
코드 설명
ascendNumber 함수는 개별 숫자의 자릿수를 오름차순으로 정렬하는 역할을 합니다. 먼저 String()으로 숫자를 문자열로 변환한 뒤, split('')으로 한 글자씩 분리하고 map()을 통해 각 문자를 숫자 타입으로 변환합니다. 이후 sort((a, b) => a - b)로 오름차순 정렬하고, join('')으로 다시 하나의 문자열로 합쳐 반환합니다.
sortDigits 함수는 for 반복문을 사용해 배열의 모든 요소에 ascendNumber 함수를 적용하고, 그 결과를 새로운 배열에 담아 최종적으로 반환합니다.
참고로 join('')의 반환값은 문자열이므로, 결과가 반드시 숫자 타입이어야 한다면 res.push(Number(ascendNumber(arr[i])))처럼 Number()로 감싸주면 됩니다.
출력
콘솔에 출력되는 결과는 다음과 같습니다 −
[
'345', '56',
'334', '57',
'567', '788',
'78'
]