ℹ️ 프렙 코스 신청 전 자가점검 - 예시 문제 2

첫 풀이

// 예시 문제 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객체를 거쳤다가 다시 객체로 만들었는데 다시 순서가 바뀜 ㅠㅠ

좋은 웹페이지 즐겨찾기