Group Object using ID

by Jithin Raj P R

JavaScript

var data = [
  { id: 1, name: "Alice", dept: "IT" },
  { id: 2, name: "Bob", dept: "HR" },
  { id: 1, name: "John", dept: "IT" },
  { id: 2, name: "Sara", dept: "HR" },
  { id: 3, name: "Mike", dept: "Finance" }
];


function dataOrganizer(arr, key) {
   const grouped = arr.reduce((acc, item) => {
    (acc[item[key]] ||= []).push(item);
    return acc;
  }, {});

  return Object.entries(grouped).map(([k, users]) => ({
    [key]: Number(k),
    users
  }))
}


console.log(dataOrganizer(data, 'id'))

// Output
// [
//   {
//     id: 1,
//     users: [
//       { id: 1, name: "Alice", dept: "IT" },
//       { id: 1, name: "John", dept: "IT" }
//     ]
//   },
//   {
//     id: 2,
//     users: [
//       { id: 2, name: "Bob", dept: "HR" },
//       { id: 2, name: "Sara", dept: "HR" }
//     ]
//   },
//   {
//     id: 3,
//     users: [
//       { id: 3, name: "Mike", dept: "Finance" }
//     ]
//   }
// ]