주어진 키 값에 따른 group 메서드를 Array 형식에 지정하는 문제이다.
interface Array<T> {
groupBy(fn: (item: T) => string): Record<string, T[]>
}
Array.prototype.groupBy = function(fn) {
return this.reduce((acc, cur) => {
// 주어진 fn의 현재 값을 넣으면 원하는 key 값이 나옴
const key = fn(cur)
if(!acc[key]) acc[key] = [cur]
else acc[key].push(cur)
return acc
}, {})
}