Как объединить объекты одного массива по одинаковому значению объекта?

Имеем массив с объектами:

[{
    "id": 326277,
    "part": 2,
    "coll": "231.5"
  },
  {
    "id": 326278,
    "part": 2,
    "coll": "231"
  },
  {
    "id": 326279,
    "part": 2,
    "coll": "231"
  },
  {
    "id": 326280,
    "part": 2,
    "coll": "230"
  }
]

Как видно есть одинаковые значения "coll" = 231, как преобразовать массив, что бы в результате объединить объекты с одинаковыми значениями "coll" в один массив как в примере ниже:

[
  [{
    "id": 326277,
    "part": 2,
    "coll": "231.5"
  }],
  [{
      "id": 326278,
      "part": 2,
      "coll": "231"
    },
    {
      "id": 326279,
      "part": 2,
      "coll": "231"
    }
  ],
  [{
    "id": 326280,
    "part": 2,
    "coll": "230"
  }]
]

Ответы (1 шт):

Автор решения: Sanya H

Сначала группируем по полю "coll", а далее возвращаем только значения

const data = [{
    "id": 326277,
    "part": 2,
    "coll": "231.5"
  },
  {
    "id": 326278,
    "part": 2,
    "coll": "231"
  },
  {
    "id": 326279,
    "part": 2,
    "coll": "231"
  },
  {
    "id": 326280,
    "part": 2,
    "coll": "230"
  }
];

let res = Object.values(
  data.reduce((r, cur) => {
    const key = 'k' + cur['coll']; // символ "k" добавлен, чтобы автоматически не сортировало по цифровым ключам 
    (r[key] = r[key] || []).push(cur);

    return r;
  }, {})
);

console.log(res)

→ Ссылка