Как преобразовать из множества объектов с сообщениями в один объект?
Мне нужно получить из множества объектов, которые включает в себя поля: id, text, nickName, chatId, преобразовать в один объект, который будет включать в себя поля: messages(либо же texts, без разницы) в котором будут все сообщения из множества объектов, nickName, chatId.
Пример исходных данных:

Во что нужно преобразовать:

Если не грузятся картинки, то напишу текстом:
Мне нужно из этого:
{
id: "1",
text: "Проверка связи",
nickName: "Илья Угловской",
chatId: "843582698"
},
{
id: "2",
text: "Повторяю, проверка связи",
nickName: "Илья Угловской",
chatId: "843582698"
}
Преобразовать в это:
{
messages: {
"Проверка связи",
"Повторяю, проверка связи"
},
nickName: "Илья Угловской",
chatId: "843582698"
}
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Например, так:
const data = [
{ "id": "1", "text": "Проверка связи", "nickName": "Илья Угловской", "chatId": "843582698" },
{ id: 2, text: 'Повторяю, проверка связи', nickName: 'Илья Угловской', chatId: 843582698 },
{ "id": "3", "text": "Baz 1", "nickName": "Foo Bar", "chatId": "1" },
{ id: 4, text: 'Baz 2', nickName: 'Foo Bar', chatId: 1 },
];
const newData = Object.values(data.reduce(
(acc, { chatId, nickName, text }) => {
// acc[chatId] ??= { chatId, nickName, messages: [] };
if (!acc[chatId]) acc[chatId] = { chatId, nickName, messages: [] };
acc[chatId].messages.push(text);
return acc;
},
{},
));
console.log(newData);