function groupBy(array, keyFn) {
if (typeof Object.groupBy === 'function') {
return Object.groupBy(array, keyFn);
}
return array.reduce((acc, item) => {
const key = typeof keyFn === 'function' ? keyFn(item) : item[keyFn];
(acc[key] ??= []).push(item);
return acc;
}, {});
}
// Usage
const people = [
{ name: 'Alice', dept: 'eng' },
{ name: 'Bob', dept: 'design' },
{ name: 'Carol', dept: 'eng' },
];
console.log(groupBy(people, 'dept'));
// { eng: [Alice, Carol], design: [Bob] }
Create a free account and build your private vault. Share publicly whenever you want.