
과목별 학점(알파벳)데이터가 들어있는 객체를 학점값을 숫자로 치환한 새로운 객체를 반환하는 함수를 구현하는 문제를 풀게되었다.
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(객체)파트였던 것이다.
계속 반복되는 case와 break가 너무 보기 싫다...😡
수 많은 조건을 if나 switch를 이용해서 짜야만 한다고 생각했던 내가 한단계 성장하는 것인가!!!!!
🔥 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(과목)에 대한 학점이 숫자로 치환된 객체를 얻을수 있다.
오늘도 지식을 차곡차곡 쌓아가는 하루였다.🤩