코플릿 기록/JavaScript

고차함수 31번

뭉지야 2023. 1. 12. 21:48
728x90

#문제

학생의 정보가 담긴 객체를 요소로 갖는 배열을 입력받아 아래 조건에 맞게 변형된 배열을 리턴해야 합니다.

남학생들의 정보는 리턴하는 배열에서 제외합니다.

'grades'속성값은 평균값(number타입)으로 바꿉니다.


#예시

let studentList = [
  {
    name: 'Anna',
    gender: 'female',
    grades: [4.5, 3.5, 4],
  },
  {
    name: 'Dennis',
    gender: 'male',
    country: 'Germany',
    grades: [5, 1.5, 4],
  },
  {
    name: 'Martha',
    gender: 'female',
    grades: [5, 4, 4, 3],
  },
  {
    name: 'Brock',
    gender: 'male',
    grades: [4, 3, 2],
  },
];

let output = studentReports(studentList);

console.log(output); // -->
[
  { name: 'Anna', gender: 'female', grades: 4 },
  { name: 'Martha', gender: 'female', grades: 4 },
];

#정답

function studentReports(students) {
return students.reduce((acc,cur) => {
if(cur.gender === 'female') {
const sum = cur.grades.reduce((acc, cur) => acc + cur);
cur.grades = sum / cur.grades.length;
acc.push(cur);
}
}, []);
}
function studentReports(students) {
let femaleArr = students.filter(el => el.gender === 'female');
return femaleArr.map(el => {
let sum = el.grades.reduce((acc,cur) => acc + cur);
let average = sum / el.grades.length;
el.grades = average;
return el;
}
}

이런 문제를 매핑문제라고 하나보다

어떤 값을 다른값으로 가리키게 하는 과정

728x90