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

JavaScript에서 객체를 값 기준으로 오름차순 정렬하는 방법

다음과 같은 객체가 있다고 가정해 보겠습니다.

const obj = {
    "sub1": 56,
    "sub2": 67,
    "sub3": 98,
    "sub4": 54,
    "sub5": 87
};

이제 이러한 객체를 인수로 받아, 객체에 담긴 값(value)을 기준으로 오름차순 정렬한 뒤 그 결과로 만들어진 새로운 객체를 반환하는 JavaScript 함수를 작성해야 합니다.

예제 코드

이를 구현한 코드는 다음과 같습니다.

const obj = {
    "sub1": 56,
    "sub2": 67,
    "sub3": 98,
    "sub4": 54,
    "sub5": 87
};
const sortObject = obj => {
    const sorter = (a, b) => {
        return obj[a] - obj[b];
    };
    const keys = Object.keys(obj);
    keys.sort(sorter);
    const res = {};
    keys.forEach(key => {
        res[key] = obj[key];
    });
    return res;
};
console.log(sortObject(obj));

동작 원리

이 코드는 다음 세 단계로 동작합니다.

1. 키 추출: Object.keys() 메서드를 사용해 객체의 모든 키를 배열 형태로 가져옵니다.
2. 정렬: sort() 메서드에 비교 함수(sorter)를 전달하여, 각 키에 해당하는 값의 차이(obj[a] - obj[b])를 기준으로 키 배열을 오름차순으로 정렬합니다.
3. 새 객체 생성: 정렬된 키 순서대로 값을 새로운 객체 res에 할당한 후 반환합니다.

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

{ sub4: 54, sub1: 56, sub2: 67, sub5: 87, sub3: 98 }

결과를 보면 값이 작은 것부터 큰 순서(54 → 56 → 67 → 87 → 98)로 객체가 재구성된 것을 확인할 수 있습니다. 참고로 최신 JavaScript 환경에서는 문자열이 아닌 키의 삽입 순서가 대체로 유지되므로, 이 방식으로 정렬된 순서가 그대로 보존됩니다.