[TIL] 값을 치환하는 조건을 객체를 이용해서 변경하는 방법 🙄

하태현·2020년 11월 19일
0
post-thumbnail

과목별 학점(알파벳)데이터가 들어있는 객체를 학점값을 숫자로 치환한 새로운 객체를 반환하는 함수를 구현하는 문제를 풀게되었다.

ex) '인지발달심리학': 'A+' => '인지발달심리학': 4.5

const scores = {
  '생활속의회계': 'C',
  '논리적글쓰기': 'B',
  '독일문화의이해': 'B+',
  '기초수학': 'D+',
  '영어회화': 'C+',
  '인지발달심리학': 'A+',
};

const getExamResult = (scores) => {
  const result = {};
  for (let key in scores) {
    let value;
    switch (scores[key]) {
      case "A+":
        value = 4.5;
        break;
      case "A":
        value = 4;
        break;
      case "B+":
        value = 3.5;
        break;
      case "B":
        value = 3;
        break;
      case "C+":
        value = 2.5;
        break;
      case "C":
        value = 2;
        break;
      case "D+":
        value = 1.5;
        break;
      case "D":
        value = 1;
        break;
      case "F":
        value = 0;
        break;
    }
    result[key] = value;
  }

  return result
}
console.log(getExamResult(scores))

switch문을 이용해서 문제를 풀었다. 이렇게 하니 코드 길이가 상당히 길어져 버렸다...

자바스크립트를 공부한지 얼마 되지 않아 문제를 해결하는 것에만 급급했는데, 생각해보니 해당 문제가 Object(객체)파트였던 것이다.

계속 반복되는 casebreak가 너무 보기 싫다...😡

객체는 [key]/[value]로 이루어진 요소들의 묶음!!

Yureka!! 😎

수 많은 조건을 ifswitch를 이용해서 짜야만 한다고 생각했던 내가 한단계 성장하는 것인가!!!!!

🔥 Key 값에 조건을 넣고 Value에 치환할 값을 넣는다면, 조건문을 객체로 해결할수 있다.

자! 그래서 객체라는 개념을 반영한 코드 두두등장!😎(머쉬베놈!)

보아라 얼마나 간결하고 아름다운 코드가 완성되었는가!!

const scores = {
  '생활속의회계': 'C',
  '논리적글쓰기': 'B',
  '독일문화의이해': 'B+',
  '기초수학': 'D+',
  '영어회화': 'C+',
  '인지발달심리학': 'A+',
};

const getExamResult = (scores) => {
  const result = {};

  for (let key in scores) {
    const test = {
      'A+': 4.5,
      'A': 4,
      'B+': 3.5,
      'B': 3,
      'C+': 2.5,
      'C': 2,
      'D+': 1.5,
      'D': 1,
      'F': 0
    };
    
    result[key] = test[scores[key]];
  }
  return result
}

console.log(getExamResult(scores));
  • test객체의 key값은 조건, value는 조건에 맞으면 치환할 값이다.
  • result[key] = test[scores[key]];
    • key : '인지발달심리학'
    • scores[key] : 'A+'
    • test[scores[key]] : 4.5
  • 이렇게 for문이 객체를 순회하는 동안 key(과목)에 대한 학점이 숫자로 치환된 객체를 얻을수 있다.

오늘도 지식을 차곡차곡 쌓아가는 하루였다.🤩

profile
왜?를 생각하며 개발하기, 다양한 프로젝트를 경험하는 것 또한 중요하지만 내가 사용하는 기술이 어떤 배경과 이유에서 만들어진 건지, 코드를 작성할 때에도 이게 최선의 방법인지를 끊임없이 질문하고 고민하자. 이 과정은 앞으로 개발자로 커리어를 쌓아 나갈 때 중요한 발판이 될 것이다.

0개의 댓글