0


I have an array of objects. Every object has a name key, I want to return an array of objects which contain same name value objects in an array against a key.
Thank you.

const data = [
  {
    name: "John",
    age: 20,
  },
  {
    name: "Brad",
    age: 24,
  },
  ,
  {
    name: "Will",
    age: 20,
  },
  ,
  {
    name: "Alex",
    age: 25,
  },
  {
    name: "Taylor",
    age: 21,
  },
];

Expected output:

[
  {
    1: [
      {
        name: "John",
        age: 20,
      },
      {
        name: "Will",
        age: 20,
      },
    ],
    2: [
      {
        name: "Brad",
        age: 24,
      },
      {
        name: "Taylor",
        age: 24,
      },
    ],
    3: [
      {
        name: "Alex",
        age: 25,
      },
    ],
  },
];
rocco
  • 133
  • 1
  • 8

1 Answers1

0

here is the answer

 result = data.reduce(function (r, a) {
    r[a.age] = r[a.age] || [];
    r[a.age].push(a);
    return r;
  }, Object.create(null));

console.log(result);
rocco
  • 133
  • 1
  • 8