Object To MAp
질문
javascript 에서 object 타입을 map타입으로 변환할 때 배열 안에 있는 object들도 map으로 변환시킬 수 있게 reucrsive형태로 짜줘
답변
function objectToMap(obj) {
// 만약 obj가 객체가 아니라면 그냥 반환
if (typeof obj !== 'object' || obj === null) {
return obj;
}
// 만약 obj가 배열이라면 배열의 각 요소에 대해 재귀적으로 objectToMap 호출
if (Array.isArray(obj)) {
return obj.map(item => objectToMap(item));
}
// 만약 obj가 객체라면 각 속성을 맵으로 변환
const mapObj = new Map();
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
mapObj.set(key, objectToMap(obj[key]));
}
}
return mapObj;
}
// 예제 사용
const originalObject = {
name: 'John',
age: 30,
address: {
city: 'New York',
country: 'USA'
},
hobbies: ['reading', 'traveling']
};
const resultMap = objectToMap(originalObject);
console.log(resultMap);
/**
Map(4) {
'name' => 'John',
'age' => 30,
'address' => Map(2) { 'city' => 'New York', 'country' => 'USA' },
'hobbies' => [ 'reading', 'traveling' ]
}
*/
Map To Object
질문
javascript 에서 Map타입을 Object타입으로 변환할 때 배열 안에 있는 Map들도 전부 Object로 변환시킬 수 있게 reucrsive형태로 짜줘
답변
function mapToObject(map) {
if (!(map instanceof Map)) {
return map;
}
const obj = {};
map.forEach((value, key) => {
if (Array.isArray(value)) {
obj[key] = value.map(item => mapToObject(item));
} else if (value instanceof Map) {
obj[key] = mapToObject(value);
} else {
obj[key] = value;
}
});
return obj;
}
// 예제 사용
const originalMap = new Map([
['name', 'John'],
['age', 30],
['address', new Map([
['city', 'New York'],
['country', 'USA']
])],
['hobbies', [
new Map([
['type', 'reading'],
['level', 'high']
]),
new Map([
['type', 'traveling'],
['level', 'medium']
])
]]
]);
const resultObject = mapToObject(originalMap);
console.log(resultObject);
/**
{
name: 'John',
age: 30,
address: { city: 'New York', country: 'USA' },
hobbies: [
{ type: 'reading', level: 'high' },
{ type: 'traveling', level: 'medium' }
]
}
*/
참고
[1] chatGPT
이 문서는
jhy156456에 의해 작성되었습니다.
마지막 수정 날짜:2023-11-09 19:12:00