180927 TIL Lec2 학점계산기 step2
Sep 27, 2018
»
1막,
TIL (Today I Learned)
학점계산기 step2
- step1에서 받은 피드백 적용하고 step2 요구사항 적용하는데, 요구사항 3번을 연휴내내 풀지를 못했다..
요구사항 3
다음과 같이 정렬한 형태로 출력되도록 sortGrade 함수를 만든다. grade를 우선정렬하고, 그 안에서는 학점으로 정렬된다.
const data = [{...}, {....}., {...}];
> sortMyGrade(data);
-------------
'데이터베이스', 'A' , 3학점
'웹프로그래밍', 'A' , 3학점
'네트워크실습', 'A' , 1학점
'자료구조와 알고리즘', 'B' , 3학점
'프로그래밍 설계', 'B' , 2학점
'이산수학', 'B' , 1학점
'Java완전정복', 'D' , 3학점
'VIM으로최강속도코딩하기', 'D , 1학점
-------------
- 객체 값에 접근해서 어떻게 정렬해야하는지, 또 같은 것끼리 묶은 뒤 학점 순으로는 어떻게 정렬해야 하는지 전 - 혀 감이 오지 않았다. ㅠㅠ
- 반의 도움으로 해결 후 PR을 보낼 수 있었다.
- gradePoint라는 key 값을 만들어서 정렬 후 같은 grade끼리 credit이 다르면 credit 값이 큰 것이 앞으로 오도록 수정했다.
function sortGrade(dataArr) {
for (i = 0; i < dataArr.length; i++) {
dataArr[i].gradePoint = fourPointFiveTable[dataArr[i]['grade']];
}
dataArr.sort(function (a, b) {
return b.gradePoint - a.gradePoint;
});
for (i = 0; i < dataArr.length; i++) {
for (j = 0; j < dataArr.length; j++) {
if (dataArr[i]['grade'] === dataArr[j]['grade'] && dataArr[i]['credit'] > dataArr[j]['credit']) {
let temp = dataArr[i];
dataArr[i] = dataArr[j];
dataArr[j] = temp;
}
}
}
return dataArr;
}
function print(dataArr) {
let data = sortGrade(dataArr);
let output = "";
output += `-----------------------------------------\n`
for (i = 0; i < data.length; i++) {
output += `${data[i]['name']}, ${data[i]['grade']}, ${data[i]['credit']}학점\n`
}
output += `-----------------------------------------`;
return output;
}