I normally just write
const groupBy = (fn, arr) => {
return arr.reduce((o, e) => {
const k = fn(e)
if (o[k] !== undefined) o[k].push(e)
else o[k] = [e]
return o
} Object.create(null))
}