Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 배열의 모든 숫자 자릿수 오름차순 정렬하기


이번 문제에서는 숫자로 이루어진 배열을 인자로 받아, 각 숫자의 자릿수를 내부적으로 특정 순서(여기서는 오름차순)대로 재배열하는 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'
]