Сделать из массивов 1 массив с объектами
Есть первый массив:
const arr1 = [
{ id: 1, name: "Группа 1" },
{ id: 3, name: "Группа 2" },
{ id: 2, name: "Группа 3" },
];
Есть второй массив:
const arr2 = [
{
groupId: 1,
title: "Test Title 1",
},
{
groupId: 2,
title: "Test Title 2",
},
{
groupId: 2,
title: "Test Title 2",
},
{
groupId: 3,
title: "Test Title 3",
},
];
Нужно получить массив с объектами вида:
const arr3 = [
{
title: "Группа 1",
docs: [
{
groupId: 1,
title: "Test Title",
},
],
},
{
title: "Группа 2",
docs: [
{
groupId: 2,
title: "Test Title",
},
{
groupId: 2,
title: "Test Title",
},
],
},
{
title: "Группа 3",
docs: [
{
groupId: 3,
title: "Test Title",
},
],
},
];
Ответы (2 шт):
Автор решения: Dmitrii Sedov
→ Ссылка
Всё довольно просто. Пример решения ниже. Используя flatMap сводим к единому массиву два других.
const arr1 = [
{ id: 1, name: "Группа 1" },
{ id: 3, name: "Группа 2" },
{ id: 2, name: "Группа 3" },
];
const arr2 = [
{
groupId: 1,
title: "Test Title 1",
},
{
groupId: 2,
title: "Test Title 2",
},
{
groupId: 2,
title: "Test Title 2",
},
{
groupId: 3,
title: "Test Title 3",
},
];
const arr3 = arr1.flatMap(item => {
const tempObj = {
title: item.name,
docs: []
}
tempObj.docs = arr2.filter(({groupId}) => groupId === item.id);
return [tempObj]
})
console.log(arr3)
Автор решения: Александр
→ Ссылка
Так сделал. Спасибо всё равно.
const items =
arr1.map((itema) => ({
title: itema.name,
docs: arr2.filter((itemb) => itemb.groupId === itema.id),
}));