작성
·
37
0
function FlatEvaluation(evaluation: Array<[string, { score: number }]>) {
return pipe(
evaluation,
filter(([key]) => key !== "overallAssessment"),
map(([key, value]) => ({ key: key, score: value.score }))
);
}
function findPros(evaluation: { [x: string]: { score: number } }) {
return pipe(
Object.entries(evaluation),
FlatEvaluation,
filter((item) => item.score >= 80),
reduce((item, acc) => (item.score > acc.score ? item : acc)),
(item) => item.key
);
}
// A의 경우
findPros({ a: { score: 90 }, b: { score: 85 }, c: { score: 75 } })
// B의 경우
findPros({ a: { score: 70 }, b: { score: 65 }, c: { score: 75 } })
안녕하세요 선생님 강의 잘 듣고 있습니다. 다름이 아니라 한 가지 궁금한 점이 있어서 이렇게 질문을 드립니다 (나중에 뒤에 가서 이 문제에 대한 해답이 나오거나, 이미 앞에 이런 문제에 대한 해결 방법이 나왔다면 참 부끄러워질 거 같긴 합니다)
다름이 아니라 FxTS를 사용해 기존의 프로젝트 일부를 함수형으로 리팩토링 해보고자 하는 중이었습니다. { [x: string]: { score: number } }
타입의 객체를 인자로 받아 제일 고득점을 한 인원의 이름(key)를 리턴해야 합니다.
A의 경우 80점 이상의 득점자가 두 명이 있고, 그 중 더 높은 득점을 한 a의 이름이 잘 리턴됩니다.
그런데 B의 경우 80점 이상의 득점자가 하나도 없다보니 filter가 적절한 값을 리턴하지 못해 reduce에서 에러가 납니다.
이런 경우에는 어떻게 처리하는 게 옳을지 궁금합니다.