🥉 뭔가 두서가 없는 블로그가 되어가는 듯 하지만..
하루동안 한 여러가지 것들 중에 오늘은 열심히 내 손으로(80%) 풀어본 코드를 리뷰해서 기억에(?) 더 남겨보려 한다.
🕰 오늘의 학습 시간
getExamResult
함수를 구현하세요.인자 scores
는 다음과 같은 객체입니다. 객체의 요소의 갯수 및 키의 이름들은 달라질 수 있습니다. 객체의 값은 다음 9가지 문자열 중에서 하나를 가지고 있습니다.
{
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+',
}
인자 requiredClasses
는 다음과 같이 문자열로 된 배열입니다.
['영어회화', '기초수학', '공학수학', '컴퓨터과학개론']
다음 조건을 만족하는 객체를 리턴하도록 함수를 구현해주세요.
scores
객체가 가지고 있는 키들은 새로운 객체에 포함되어야 합니다. 단, 그 값들은 다음 원리에 따라 숫자로 바뀌어 할당되어야 합니다.requiredClasses
배열의 요소로는 존재하지만, scores
의 키로는 존재하지 않는 항목이 있다면, 해당 요소는 새로운 객체의 키가 되고, 값으로 0을 가져야 합니다. 위에서 예시로 묘사된 객체와 배열이 인자로 들어왔다면, 다음과 같은 객체과 리턴됩니다. 요소간 순서는 다를수 있지만, 채점에 무관합니다. {
'생활속의회계': 2,
'논리적글쓰기': 3,
'독일문화의이해': 3.5,
'기초수학': 1.5,
'영어회화': 2.5,
'인지발달심리학': 4.5,
'공학수학': 0,
'컴퓨터과학개론': 0,
}
하아~~ 사실 다시풀어보라그러면 또 헤멜거 같지만! 여기서 포인트를 잡자면
`객체의 키값을 변환` `객체의 값과 배열의 요소를 비교 후 원하는 키와 값으로 생성` 이지 싶다.
이를 해결하기 위해 사용한 개념은 맵핑
(키와 값의 1:1 매칭), for..in
, for문
, if문
이다.
1:1로 바뀌어야 하기 때문에 새로운 배열을 활용하여 scores
의 값을 키로 하는 바꿀 키값을 맵핑
시켜 주었다.
const scoresMap = {
["A+"]: 4.5,
A: 4,
["B+"]: 3.5,
B: 3,
["C+"]: 2.5,
C: 2,
["D+"]: 1.5,
D: 1,
F:0
}
다음엔 점수로 바뀐 값을 원래의 키에 값으로 바꿔주기 위해 새롭게 만들어질 배열을 만들고 for..in
을 활용하여 scores
의 키를 반복해서 불러오고 점수로 바뀐 값을 할당 해 주었다.
const result = {};
for(const property in scores){
result[property] = scoresMap[scores[property]]
}
마지막으로 없는 값을 비교하고 없으면 새로운 키와 값으로 넣는 작업을 하기 위해 for문
을 활용하여 반복하고 if문
을 통해 조건을 주었다, !
을 활용 해 없는 것(false)을 맞는 조건(true)로 바꿔 주었다.
for(i = 0; i < requiredClasses.length; i++) {
if(!result[requiredClasses[i]]){
result[requiredClasses[i]] = 0
}
}
return result;
}
오늘 포스팅은 사실 전혀 모르는 사람이 보면 이해하기 어렵지만 정말로 단순하게 내가 나중에 보고 기억을 상기시키기 위한? 정리로 봐도 무방 할것 같다.
다 풀어놓고 실제 문제에서 안해봐서 테스트를 누르고 조마조마 했다는 후문이..😱