Есть массив объектов, у каждого объекта есть поле "code" которое у некоторых повторяется, необходимо сделать один объект из повторяющихся значений поля "code" и внутри объекта сделать массив всех повторяющих объектов с этим полем.
Пример исходного массива:
const data = [
{
id: 3547,
code: "T5",
name: "«Комплексная защита»",
price: 17000,
data: {
period: "1 год",
periodId: "000000001"
}
},
{
id: 3936,
code: "T5",
name: "«Комплексная защита»",
price: 100000,
data: {
period: "10 лет",
periodId: "000000010"
}
},
{
id: 3937,
code: "T5",
name: "«Комплексная защита»",
price: 200000,
data: {
period: "20 лет",
periodId: "000000020"
}
},
{
id: 3938,
code: "T5",
name: "«Комплексная защита»",
description: "",
price: 300000,
data: {
period: "30 лет",
periodId: "000000030"
}
},
{
id: 3939,
code: "T3R",
name: "Услуга 2",
description: null,
price: 150000,
data: {
period: "10 лет",
periodId: "000000010"
}
},
{
id: 3940,
code: "T3R",
name: "Услуга 2",
description: null,
price: 250000,
data: {
period: "20 лет",
periodId: "000000020"
}
},
{
id: 3941,
name: "Услуга 2",
name: null,
description: null,
price: 350000,
data: {
period: "30 лет",
periodId: "000000030"
}
},
{
id: 3942,
code: "T13",
name: "«Защита экрана»",
description: "",
price: 2400,
data: {
period: "3 месяца",
periodId: "000000005"
}
},
{
id: 3943,
code: "T13",
name: "«Защита экрана»",
description: "",
price: 13450,
data: {
period: "6 месяцев",
periodId: "000000006"
}
},
{
id: 3944,
code: "T13",
name: "«Защита экрана»",
description: "",
price: 22300,
data: {
period: "1 год",
periodId: "000000001"
}
}
]
Результат:
{
code: 'T13',
name: "«Защита экрана»",
variants: [
{
id: 3944,
code: "T13",
name: "«Защита экрана»",
description: "",
price: 22300,
data: {
period: "1 год",
periodId: "000000001"
}
},
{
id: 3942,
code: "T13",
name: "«Защита экрана»",
description: "",
price: 2400,
data: {
period: "3 месяца",
periodId: "000000005"
}
},
]
},
Ну и соответственно остальные значения объекта с поле "code".