본문 바로가기
2020-2021/Errors

10월10일

by Tate_Modern 2020. 10. 10.

function studentReports(students) {
 
 Step1. 남자를 제외한 배열을 만든다.
 
    let num  = 0; 
    let femaleArr = students.filter(student => student.gender === 'female') 

Step2. Step1에서 만든 요소들 중 grades를 담고있는 배열을 뽑아온다.

    let getScore =  femaleArr.map(females => females.grades)
    console.log(getScore)
    
Step3. step2에서 뽑아온 점수의 평균을 낸다.

    let getAverage = getScore.forEach(score => score.reduce((subjectScore1, subjectScore2) => 
    subjectScore1 + subjectScore2,0))
   

Step3. 평균을 낸 점수를 step1의 점수로 값을 교체해준다.

    console.log(femaleArr) 
}

----------------------------
위의 방식대로 하면 문제가 생긴다.

getAverage = [[1,2,3],[2,3,4]]

getAverage.forEach(function(scores){
	scores.redcue( function (sub1,sub2){
	res = sub1 + sub2	
    return res;
  })
})

1. score[0] = [1,2,3,4] //  [1+2+3+4] => 10
2. score[1] = [2,3,4] // [2+3+4] = 9

// 1. reduce의 최종값을 저장할 수 없다.

// 2. 저장해도 평균을 구하기 위해서 불필요한 작업들을 해야한다.
step3에서 각각의 배열안에 들어있는 점수들은 더할 수 있지만 score.length가 reduce의 결과가
리턴되는 순간 사라지기 때문에 각각의 배열안에 있는 score.length를 구하기 위한 변수를 다시 만들어야 한다.

 


function studentReports(students) {   
    let femaleArr = students.filter(student => student.gender === 'female') 

    return femaleArr.map(function(females){
      let addScroes = females.grades.reduce((subject1, subject2) => subject1+subject2,0);
    
    	let getAverage = addScroes / females.grades.length  

   		 females.grades = getAverage

    return females
});
}

'2020-2021 > Errors' 카테고리의 다른 글

10/29 잊기전에 메모...  (0) 2020.10.29
10월 11일  (0) 2020.10.11
10월9일  (0) 2020.10.09
10월8일  (0) 2020.10.09
10월 5일  (0) 2020.10.05

댓글