Group array items by property with Object.groupBy and Map.groupBy
JavaScript Dasun Kalupahana 108 views
const people = [
{ name: "Ann", role: "dev" },
{ name: "Bob", role: "ops" },
{ name: "Cy", role: "dev" },
];
console.log(Object.groupBy(people, p => p.role));
console.log(Map.groupBy(people, p => p.role).get("ops"));
// [Object: null prototype] {
// dev: [ { name: 'Ann', role: 'dev' }, { name: 'Cy', role: 'dev' } ],
// ops: [ { name: 'Bob', role: 'ops' } ]
// }
// [ { name: 'Bob', role: 'ops' } ]
Buckets an array by a callback’s return value, replacing the usual reduce boilerplate. Map.groupBy keeps non-string keys. The Object.groupBy result has a null prototype. Needs Node 21+, Chrome 117, Firefox 119 or Safari 17.4.