1

I'm trying to group the follow array by id.

Ive tried using lodash, but my result is also duplicating id i.e "id":[6,6,6,6]

This is my existing array;

[
  {
    "nestedGroups": 64,
    "id": 6
  },
  {
    "nestedGroups": 27,
    "id": 6
  },
  {
    "nestedGroups": 24,
    "id": 6
  },
  {
    "nestedGroups": 69,
    "id": 6
  }
]

My expected outcome is to combine the nestedGroups into an array using the id as the key.

[
  {
    "nestedGroups": [64,27,24,69],
    "id": 6
  }
]
rayzor
  • 25
  • 3

1 Answers1

1

You can use reduce() and find()

let arr = [ { "nestedGroups": 64, "id": 6 }, { "nestedGroups": 27, "id": 6 }, { "nestedGroups": 24, "id": 6 }, { "nestedGroups": 69, "id": 6 } ]

const res = arr.reduce((ac,a) => {
  let temp = ac.find(x => x.id === a.id);
  if(!temp) ac.push({...a,nestedGroups:[a.nestedGroups]})
  else temp.nestedGroups.push(a.nestedGroups)
  return ac;
},[])
console.log(res)
Maheer Ali
  • 35,834
  • 5
  • 42
  • 73