bemdev
@bemdev

Как сгруппировать массив объектов по значениям одного из их свойств?

Есть массив:

let firstArray = [
    {
        id: 1,
        ware: 'Test',
        price: 122.3
    },
    {
        id: 2,
        ware: 'Test',
        price: 122.3
    },
    {
        id: 1,
        ware: 'Fre',
        price: 133.3
    }
];

Надо из него получить следующий:

let resultArray = [
    {
        id: 1,
        offers: [
            {
                id: 1,
                ware: 'Test',
                price: 122.3
            },
            {
                id: 1,
                ware: 'Fre',
                price: 133.3
            }
        ]
    },
    {
        id: 2,
        offers: [
            {
                id: 2,
                ware: 'Test',
                price: 122.3
            }
        ]
    }
];
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const result = Object.values(arr.reduce((acc, n) => {
  const group = acc[n.id] = acc[n.id] || { id: n.id, offers: [] };
  group.offers.push(n);
  return acc;
}, {}));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы