JavaScript에서 객체(Object)에 저장된 키-값 쌍을 특정 순서대로 정렬하여 가져오고 싶은 경우가 종종 있습니다. 객체 키를 기준으로 오름차순으로 정렬하려면 sort() 메서드와 함께 Object.keys(), Object.fromEntries()를 조합하여 사용할 수 있습니다.
예제 객체
먼저 다음과 같은 객체가 있다고 가정해 보겠습니다.
const subjectDetails = {
102: "Java",
105: "JavaScript",
104: "MongoDB",
101: "MySQL"
};위 객체의 키는 102, 105, 104, 101 순서로 저장되어 있어 정렬되어 있지 않습니다. 이제 sort() 메서드를 사용해 객체의 항목을 순서대로 가져와 보겠습니다.
const orderSubjects =
Object.fromEntries(Object.keys(subjectDetails).sort().map((k) => {
return [k, subjectDetails[k]];
}));코드 동작 원리
Object.keys()는 객체의 모든 키를 배열로 반환하고, sort()가 해당 키들을 오름차순으로 정렬합니다. 이후 map()으로 정렬된 각 키에 대응하는 값을 [키, 값] 형태의 배열로 만들고, 마지막에 Object.fromEntries()가 이를 새로운 객체로 변환합니다.
전체 예제 코드
const subjectDetails = {
102: "Java",
105: "JavaScript",
104: "MongoDB",
101: "MySQL"
};
const orderSubjects =
Object.fromEntries(Object.keys(subjectDetails).sort().map((k) => {
return [k, subjectDetails[k]];
}));
console.log(orderSubjects);위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 사용합니다.
node fileName.js
실행 결과
여기서는 파일 이름이 demo146.js라고 가정합니다. 프로그램을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo146.js
{
'101': 'MySQL',
'102': 'Java',
'104': 'MongoDB',
'105': 'JavaScript'
}출력 결과를 보면 객체의 키가 101, 102, 104, 105 순으로 올바르게 정렬되어 있는 것을 확인할 수 있습니다. 이처럼 Object.keys(), sort(), map(), Object.fromEntries()를 활용하면 객체의 항목을 손쉽게 정렬된 순서로 재구성할 수 있습니다.