Group Object using ID

by Jithin Raj P R

JavaScript

var data = [
  { id: 144, name: "Alice", dept: "IT" },
  { id: 233, name: "Bob", dept: "HR" },
  { id: 144, name: "John", dept: "IT" },
  { id: 233, name: "Sara", dept: "HR" },
  { id: 343, name: "Mike", dept: "Finance" }
];

function groupById(arr, key){
  const grouped = arr.reduce((acc, item) => {
    const groupKey = item[key];

    if (!acc[groupKey]) acc[groupKey] = [];
    acc[groupKey].push(item);
    
    return acc; // IMPORTANT
  }, {});

  return Object.keys(grouped).map(k => ({
    [key]: Number(k),
    item: grouped[k]
  }));
}

console.log(groupById(data, 'id'));