코플릿 29번

function joinArrayOfArrays(arr) {
  const accArr =[];
  arr.reduce(function(acc1, cur1){
    cur1.reduce(function(acc2, cur2){
      return accArr.push(cur2);
    },cur1[0]); 
    //여기서 초깃값을 이렇게 설정해주지 않으면 cur1[0]이 초깃값이 되어 acc1으로 더해지게 된다!
    //그럴 경우 위 return 식에서는 acc1 값을 사용하고 있지 않으므로 쓸데없는 값이 되어버리고 만다!
  },arr[0]);
  return accArr;
}

위의 코드에서

[['a','b'], [1, 3], [true, false]]

위와 같은 값을 arr로 입력받았다고 가정하고, ['a', 'b', 1, 3, true, false] 값으로 바꾸고 싶을 경우

초깃값인 cur1[0]과 arr[0]을 작성하지 않을 경우 발생하는 문제점을 코플릿 29번을 통해 다시 한 번 확인해 볼 것!

유어클래스 | 코드스테이츠 학습 플랫폼 UrClass

참고로 위의 과정은 단순히 acc.concat(cur) 로 간단히 해결되는 코드라는 점도 인지할 것!

concat() 함수는 파라미터로 받은 배열이나 값들을 기존의 배열에 합쳐서, 새로운 배열을 만들어서 리턴한다. (arr.concat 이 아니라 acc.concat임!!!)

코플릿 31번

function studentReports(students) {
  //남학생들의 정보는 리턴하는 배열에서 제외 - 필터링
  const femaleStudents = students.filter(function(el){
    return el.gender !== 'male';
  })
  //grade 속성 값은 평균값(number타입)으로 바꾸기
  return femaleStudents.map(function(el){
    const sum = el.grades.reduce(function(acc, cur){ return acc + cur; });
    const avg = sum / el.grades.length;
    el.grades = avg;
    return el;
  });
}

위 코드에서 sum, avg 가 가리키는 것에 주의하고 평균을 구함에 있어서 어느 부분에서 나누기를 진행하는지도 주의 깊게 볼 것!

특히 마지막 return값이 el 인 것도 확실히 이해하고 넘어가야 한다.