학습 자료 Section 5 - storage 데이터 유무에 따른 조건문에 업로드 되어 있는 문제 파일의 Reference Code입니다.

<aside> 💡 Reference Code는 수많은 풀이 방법 중 하나입니다! 참고용으로만 사용하시고, 본인의 성장을 위해 활용하시길 바랍니다.

</aside>

Stage1.js

/*
 * 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;
};

Stage2.js

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;
};