학습 자료 Section 5 - storage 데이터 유무에 따른 조건문에 업로드 되어 있는 문제 파일의 Reference Code입니다.
<aside> 💡 Reference Code는 수많은 풀이 방법 중 하나입니다! 참고용으로만 사용하시고, 본인의 성장을 위해 활용하시길 바랍니다.
</aside>
/*
* index.html 페이지가 result.png와 같이 출력되도록
* data.js 파일 내에 담긴 데이터들을 기반으로
* stage1.js => stage2.js => stage3.js 순으로 파일을 완성해 주세요.
*/
// Stage 1
// calculateAverage 함수는 designateGrade(stage2.js) 내부에서 전달인자로 넘겨준 데이터를 students라는 매개변수로 받아옵니다.
// students 매개변수는 data.js 안에 있는 배열 데이터를 그대로 받아오게 됩니다.
// 해당 데이터를 기반으로 각 학생의 평균 점수를 구해주세요. 시험을 치룬 과목의 수는 모든 학생이 동일하게 4 과목입니다.
// scoreAverage 배열에 담기는 객체는 각 학생의 이름, 각 학생의 평균 점수를 값으로 가져야 합니다.
// ex) scoreAverage = [ { name : "이정훈", score : 70.5 }, ... ]
// 모든 학생의 정보를 담은 scoreAverage 배열을 return 해주세요. return된 데이터는 stage2.js 파일로 전달됩니다.
export const calculateAverage = function (students) {
// 여기에서 작업하세요.
const result = [];
for (let i = 0; i < students.length; i++) {
let score = 0;
for (let key in students[i]) {
if (key !== 'name') {
score += students[i][key];
}
}
result.push({ name: students[i].name, score: score / 4 });
}
return result;
};
import { calculateAverage } from './stage1.js';
// ! 위의 코드는 수정하지 마세요 ! //
// Stage 2
// designateGrade 함수에서는 students라는 매개변수로 data.js 파일 안에 있는 배열 데이터를 그대로 받아오게 됩니다.
// 이후 calculateAverage(stage1.js)의 전달인자로 해당 데이터를 넘겨준 뒤, 그 리턴값을 score라는 상수 변수에 담게 됩니다.
// 완성된 calculateAverage 함수에서 건네준 각 학생의 평균 점수를 기반으로
// 모든 학생에게 알맞은 등급을 지정 후 return 하도록 함수를 완성해 주세요. return된 데이터는 render.js 파일로 전달됩니다.
// return 되는 데이터는 반드시 아래와 같은 키, 형태를 가진 배열이어야 합니다.
// return => [ { name: "이정훈", grade: "B" }, ..., { name: "최다슬", grade: "C" } ]
// 등급 기준 ( 'A' : 100 ~ 91, 'B' : 90 ~ 81, 'C' : 80 ~ 71, 'D' : 70 ~ 61, 'F' : 60 ~ )
export const designateGrade = function (students) {
// 여기에서 작업하세요.
const score = calculateAverage(students);
const answer = [];
for (let i = 0; i < score.length; i++) {
const average = score[i].score;
let grade = 'A';
if (average <= 60) grade = 'F';
else if (average <= 70) grade = 'D';
else if (average <= 80) grade = 'C';
else if (average <= 90) grade = 'B';
answer.push({ name: score[i].name, grade: grade });
}
return answer;
};