JS - 배열 안 객체 활용하기 본문
반응형
Sprint 13 배열 안 객체를 활용하여, 원하는 값 가공하기
해당 문제는 students 라는 객체를 가지고 시작함
객체 students 는 name, korean, math, english, science 각각의 데이터를 가짐
예시
const students = [
{
name: '김세준',
korean: 88,
math: 94,
english: 78,
science: 79,
}
stage 1
- 해당 학생이 가지고 있는 과목의 평균을 구하고,
- name / score 라는 key를 가진 객체를 도출하라.
이를 해결하기 위해, 내가 해야하는 것
- for문을 활용하여 "과목 수" 구하기
- 각 학생들의 "성적 총합" 구하기
- 구한 "총합"을 과목 수로 나누어 return 하기
for문을 활용하여 "과목 수" 구하기
const subject = [];
for (let i = 1; i < Object.keys(students[0]).length; i++) {
subject.push(Object.keys(students[0])[i]);
}
// subject = ['korean', 'math', 'english', 'science']
첫 key 인 name을 빼기 위해 i = 1 로 시작
Object.keys(students[0])[i] 를 통해,
객체 내부에 접근하여 korean~science까지의 값을 가져옴
이때, key값은 고정이기 때문에, student[0]가 아닌 student[1]이여도 상관 없음
각 학생들의 "성적 총합" 구하기
let totalArr = [];
for(let i=0; i<students.length; i++){
let total = 0
for(let j=0;j<subject.length; j++){
total += students[i][subject[j]]
}
totalArr.push(total)
}
이중반복문 활용
배열 totalArr 에는 students[i]가 갖는 모든 값의 총합이 들어가게 됨
구한 "총합"을 과목 수로 나누어 return 하기
let averageArr = []
for(let i=0; i<students.length;i++){
averageArr.push(totalArr[i] / subject.length)
scoreAverage[i] = {name : students[i].name, score : averageArr[i]}
}
return scoreAverage
위와 원리는 같음
scoreAverage[i] = {name : students[i].name, score : averageArr[i]} 를 통해 객체를 배열에 저장하고
scoreAverage 를 리턴함
stage 2
- 가져온 점수를 등급화한 뒤,
- name / grade 라는 key를 가진 객체를 도출하라.
점수 등급화
const score = calculateAverage(students);
let rank = []
for(let i = 0; i<score.length; i++){
if(score[i].score >= 91){
rank.push("A")
} else if(score[i].score >= 81){
rank.push("B")
} else if(score[i].score >= 71){
rank.push("C")
} else if(score[i].score >= 61){
rank.push("D")
} else {
rank.push("F")
}
}
// 객체 이름이 score로 바뀜
배열 rank에 각 등급을 넣어줌
객체 도출
let result = []
for(let i=0;i<score.length;i++){
result[i] = {name : score[i].name, grade : rank[i]}
}
console.log(result, "result")
return result
반응형
'개발 > JavaScript' 카테고리의 다른 글
JS - todolist / 날씨 적용하기(API) (0) | 2022.12.30 |
---|---|
JS - todoList (0) | 2022.12.29 |
JS - 반복문(for, while) / 객체활용 for문 / for in / for out (0) | 2022.12.28 |
JS - 함수 / 함수 사용 (1) | 2022.12.27 |
JS - 데이터, 배열, 객체 (2) | 2022.12.26 |
Comments