JavaScript 개발을 하다 보면 일반 객체(Object)를 Map 객체로 변환해야 하는 경우가 종종 있습니다. 다음과 같은 키-값 쌍으로 구성된 객체가 있다고 가정해 보겠습니다.
const obj = {
name: "Vikas",
age: 45,
occupation: "Frontend Developer",
address: "Tilak Nagar, New Delhi",
experience: 23,
};우리는 이렇게 키-값 쌍으로 이루어진 객체를 인수로 받아 Map 객체로 변환하는 JavaScript 함수를 작성해야 합니다.
구현 예제
먼저 Object.keys() 메서드와 반복문을 활용한 전통적인 방식의 코드를 살펴보겠습니다.
const obj = {
name: "Vikas",
age: 45,
occupation: "Frontend Developer",
address: "Tilak Nagar, New Delhi",
experience: 23,
salary: "98000"
};
const objectToMap = obj => {
const keys = Object.keys(obj);
const map = new Map();
for(let i = 0; i < keys.length; i++){
// Map에 새로운 키-값 쌍 삽입
map.set(keys[i], obj[keys[i]]);
};
return map;
};
console.log(objectToMap(obj));출력 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
Map(6) {
'name' => 'Vikas',
'age' => 45,
'occupation' => 'Frontend Developer',
'address' => 'Tilak Nagar, New Delhi',
'experience' => 23,
'salary' => '98000'
}더 간결한 방법: Object.entries() 활용하기
반복문 없이 Object.entries() 메서드를 사용하면 한 줄로 동일한 결과를 얻을 수 있습니다. Object.entries()는 객체의 각 키-값 쌍을 배열 형태로 반환하며, 이는 Map 생성자에 바로 전달할 수 있습니다.
const map = new Map(Object.entries(obj)); console.log(map);
정리
Map은 객체와 달리 키의 타입 제약이 적고, 삽입 순서가 보장되며, size 속성으로 요소 개수를 손쉽게 확인할 수 있는 장점이 있습니다. 상황에 맞게 위 두 가지 방법 중 하나를 선택하여 객체를 Map으로 변환해 활용하시기 바랍니다.