JavaScript를 사용하다 보면 일반 객체(Object)를 Map 자료구조로 변환해야 하는 경우가 종종 있습니다. 예를 들어, 다음과 같이 키-값 쌍으로 이루어진 객체가 있다고 가정해 보겠습니다.
const obj = {
name: "Jai",
age: 32,
occupation: "Software Engineer",
address: "Dhindosh, Maharashtra",
salary: "146000"
};객체를 Map으로 변환하는 함수
이런 객체를 인자로 받아 Map으로 변환하는 JavaScript 함수를 작성할 수 있습니다. 핵심 아이디어는 Object.keys()로 객체의 모든 키를 가져온 뒤, 반복문을 통해 각 키-값 쌍을 map.set()으로 삽입하는 것입니다.
예제 코드
const obj = {
name: "Jai",
age: 32,
occupation: "Software Engineer",
address: "Dhindosh, Maharashtra",
salary: "146000"
};
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(5) {
'name' => 'Jai',
'age' => 32,
'occupation' => 'Software Engineer',
'address' => 'Dhindosh, Maharashtra',
'salary' => '146000'
}더 간결한 방법: Object.entries() 활용
ES2017 이상의 환경이라면 Object.entries()와 Map 생성자를 조합해 한 줄로 처리할 수도 있습니다.
const map = new Map(Object.entries(obj)); console.log(map); // 위 예제와 동일한 결과
왜 Map을 사용할까?
Map은 키로 문자열 외에도 객체나 함수 등 모든 값을 사용할 수 있고, size 속성으로 요소 개수를 바로 확인할 수 있으며, 데이터 삽입·삭제와 순회에 최적화되어 있어 키-값 데이터를 동적으로 다루는 작업에 유리합니다.