// 예시 문제 2
// Object 관련 메소드 사용 금지
function inverse (collection) {
let result = {};
for (let key in collection) {
result[collection[key]] = key;
}
return result;
}
// 아래에 주어진 케이스에 대응할 수 있도록 `inverse` 함수를 작성해주세요.
// 주어진 두 가지 케이스 외에는 대응하지 않아도 됩니다.
const data1 = { a: 1, b: 2, c: 5 };
const data2 = { name: "ken", age: 30, city: "seoul" };
const result1 = inverse(data1);
const result2 = inverse(data2);
console.log(result1); // { '1': 'a', '2': 'b', '5': 'c' }
console.log(result2); // { 'ken': 'name', '30': 'age', 'seoul': 'city' }
위와 같이 하니
for in
은 순서가 보장되지 않아 원하는 result2 에서 원하는 결과값이 안나옴
// 예시 문제 2
// Object 관련 메소드 사용 금지
function inverse (collection) {
const map = new Map();
const result = {};
for (let key in collection) {
map.set(collection[key], key);
}
map.forEach((v, k) => result[k] = v);
return result;
}
// 아래에 주어진 케이스에 대응할 수 있도록 `inverse` 함수를 작성해주세요.
// 주어진 두 가지 케이스 외에는 대응하지 않아도 됩니다.
const data1 = { a: 1, b: 2, c: 5 };
const data2 = { name: "ken", age: 30, city: "seoul" };
const result1 = inverse(data1);
const result2 = inverse(data2);
console.log(result1); // { '1': 'a', '2': 'b', '5': 'c' }
console.log(result2); // { 'ken': 'name', '30': 'age', 'seoul': 'city' }
map 객체는 속성이 추가 순서대로 된대서 map객체를 거쳤다가 다시 객체로 만들었는데 다시 순서가 바뀜 ㅠㅠ