// Created on savesnippets.com ยท https://savesnippets.com/5LKzl5aWsMKMTg 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] }