각각 객체에 학생들의 성적 총합과 평균을 구하시오.
객체활용하기
const students = [
{이름: '구름', 국어: 87, 영어: 98, 수학: 88, 과학: 90},
{이름: '별이', 국어: 92, 영어: 98, 수학: 96, 과학: 88},
{이름: '겨울', 국어: 76, 영어: 96, 수학: 94, 과학: 86},
{이름: '바다', 국어: 98, 영어: 52, 수학: 98, 과학: 92}
]
console.log(students);
let output = '이름\t총점\t평균\n';
for (const student of students) {
const 총점 = student.국어 + student.영어 + student.수학 + student.과학;
const 평균 = 총점 / 4;
output += `${student.이름}\t${총점}점\t${평균}점\n`
}
console.log(output);v
이렇게 단순하게 계산하는 것보다 함수로 만들어 놓으면 확장성을 고려했을 때 좋은 방법이다.
객체를 만드는부분과 객체를 활용하는 부분으로 나누어 다시 코드를 짜보자.
객체를 생성하는 함수
//1.각각 객체에 학생들의 이름, 총점, 평균을 구하시오.(객체를 생성하는 함수)
//이름, 국어, 영어, 수학, 과학
//('구름', 87, 98, 88, 90)
//('별이', 92, 98, 96, 88)
//('겨울', 76, 96, 94, 86)
//('바다', 98, 52, 98, 92)
function createStudent (이름, 국어, 영어, 수학, 과학) {
return {
//속성을 선언합니다
이름: 이름,
국어: 국어,
영어: 영어,
수학: 수학,
과학: 과학,
//메소드를 선언합니다
getSum () {
return this.국어 + this.영어 + this.수학 + this.과학
},
getAverage () {
return this.getSum () / 4
},
toString () {
return `${this.이름}\t${this.getSum()}점\t${this.getAverage()}점\n`
}
}
}
//객체를 선언합니다
const student = []
student.push(createStudent('구름', 87, 98, 88, 90))
student.push(createStudent('별이', 92, 98, 96, 88))
student.push(createStudent('겨울', 76, 96, 94, 86))
student.push(createStudent('바다', 98, 52, 98, 92))
//출력합니다
let output = `이름\t총점\t평균\n`
for (const s of student) {
output += s.toString() //숫자타입을 문자 타입으로 변환
}
console.log(output)
class로 생성하는 함수
class Student {
constructor (이름, 국어, 영어, 수학, 과학) {
this.이름 = 이름
this.국어 = 국어
this.영어 = 영어
this.수학 = 수학
this.과학 = 과학
}
//메소드를 선언합니다.
getSum () {
return this.국어 + this.영어 + this.수학 + this.과학
}
getAverage () {
return this.getSum() / 4
}
toString () {
return `${this.이름}\t${this.getSum()}점\t${this.getAverage()}점\n`
}
}
//객체를 선언합니다
const students = []
student.push(createStudent('구름', 87, 98, 88, 90))
student.push(createStudent('별이', 92, 98, 96, 88))
student.push(createStudent('겨울', 76, 96, 94, 86))
student.push(createStudent('바다', 98, 52, 98, 92))
//출력합니다
let output = '이름\t총점\t평균\n'
for (const s of students) {
output += s.toString()
}
console.log(output)