getExamResult
함수를 구현하세요.scores ::인자 scores
는 다음과 같은 객체입니다. 객체의 요소의 갯수 및 키의 이름들은 달라질 수 있습니다. 객체의 값은 다음 9가지 알파벳 성적을 의미하는 문자열 중에서 하나를 가지고 있습니다.
'A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F'
// scores 인자 예시
{
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+',
}
requiredClasses ::인자 requiredClasses
는 다음과 같이 과목명이 문자열로 된 배열입니다.
// requiredClasses 인자 예시
['영어회화', '기초수학', '공학수학', '컴퓨터과학개론']
scores
객체가 가지고 있는 키들은 새로운 객체에 포함되어야 합니다. 단, 그 값들은 다음 원리에 따라 숫자로 바뀌어 할당되어야 합니다. (알파벳 성적 => 숫자 성적)requiredClasses
배열의 요소로는 존재하지만, scores
의 키로는 존재하지 않는 항목이 있다면, 해당 요소는 새로운 객체의 키가 되고, 값으로 0을 가져야 합니다. 요소간 순서는 다를수 있지만, 이는 채점에 무관합니다.// 앞서 언급된 예시를 인자로 받은 함수가 반환하는 객체
{
'생활속의회계': 2,
'논리적글쓰기': 3,
'독일문화의이해': 3.5,
'기초수학': 1.5,
'영어회화': 2.5,
'인지발달심리학': 4.5,
'공학수학': 0,
'컴퓨터과학개론': 0,
}
const convertExamResult = (scores, requiredClasses) => {
let result = {};
//scores안에 있는 과목명만 가져와서 배열을 만든다.
let lecture = Object.keys(scores);
//scores안에 있는 value도 가져온다. -> 사용안함..
//let lectureScore = Object.values(scores);
//각 알파벳에 해당하는 점수를 객체로 만든다.
let alphaScores = {
'A+': 4.5,
'A' : 4,
'B+': 3.5,
'B' : 3,
'C+': 2.5,
'C' : 2,
'D+': 1.5,
'D' : 1,
'F' : 0
}
for (let i in scores) {
//console.log(i); //생활속의회계
//console.log(scores[i]) //C
//console.log(alphaScores[scores[i]]); //2
//result[변수명]으로 해야한다. result.i로 하면 i : 2 이렇게 들어감
result[i] = alphaScores[scores[i]];
//console.log(result);
}
for(let i in requiredClasses){
//console.log(lecture[i]);
//scores안의 과목명만 있는 배열 lecture안에 requiredClasses요소를 돌면서 요소가 lecture안에 있는지 확인해서 false이면 result 배열에 value 0 으로 할당
if(lecture.includes(requiredClasses[i]) === false){
console.log(requiredClasses[i])
result[requiredClasses[i]] = 0;
}
}
console.log(result);
return result;
}
let scores = {
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+',
};
let requiredClasses = ['영어회화', '기초수학', '공학수학', '컴퓨터과학개론'];
convertExamResult(scores, requiredClasses);
느낀점🤔
- 저번 String 문제 풀이보다 시간이 배로 걸렸다. 정말 어렵다!
- includes를 찾기 전에 이중for문을 사용해서 풀어보려고 했다. for문을 이중으로 사용하니 오히려 코드도 복잡해지고 생각도 같이 복잡해져서 더 어렵게 느껴졌다.
- for - in으로 순회할 때 어떤 배열 또는 객체를 기준으로 잡아야 하는지 생각하는데 오래걸린다.
- 필요한 문법을 찾는데 검색을 해도 매우 오래 걸린다.
→ 자바스크립트 기본을 자주 들여다보면서 코드를 많이 짜야 한다. 연습량이 부족하다는 생각밖에 들지 않는다.. 더 분발하자!