Сделать из массивов 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),
    }));
→ Ссылка