다음과 같은 객체가 있다고 가정해 보겠습니다.
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 환경에서는 문자열이 아닌 키의 삽입 순서가 대체로 유지되므로, 이 방식으로 정렬된 순서가 그대로 보존됩니다.