과목별 학점(알파벳)데이터가 들어있는 객체를 학점값을 숫자로 치환한 새로운 객체를 반환하는 함수를 구현하는 문제를 풀게되었다.
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(과목)에 대한 학점이 숫자로 치환된 객체를 얻을수 있다.
오늘도 지식을 차곡차곡 쌓아가는 하루였다.🤩