@mint_candy

Как добавить значение в массив в определенном объекте в JS?

Есть массив такой структуры:

var arr = [{roomId: 1, text: "bla bla"}, {roomId: 1, text: "Blablalba"}, {roomId: 2, text: "Bloead"}, .....];

Нужно сделать новый массив объектов, где объекты буду иметь уникальный roomId, и text будет массивом всех элементов text, которым соответствовал определенный roomId.

Вот что должно получиться:

var arr = [{roomId: 1, text: ["bla bla", "Blablalba"]}, {roomId: 2, text: ["Bloead"]}, .....];
  • Вопрос задан
  • 166 просмотров
Решения вопроса 2
Xuxicheta
@Xuxicheta
инженер
arr.reduce((acc, el) => {
  const sought = acc.find(e => e.roomId === el.roomId);
  if (sought) {
    sought.text.push(el.text);
  } else {
    acc.push({ roomId: el.roomId, text: [el.text ]});
  }
  return acc;
}, [])
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
const grouped = Object.values(arr.reduce((acc, n) => {
  (acc[n.roomId] = acc[n.roomId] || { ...n, text: [] }).text.push(n.text);
  return acc;
}, {}));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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