JSFiddle - React, Tailwind, and code Playground

by Ed Bulikyan

JavaScript

const answer = [
  { "style": "header", "text": "Как это работает" },
  { "style": "normal", "text": "Для этого есть 5 способов:" },
  { "style": "list", "text": "С помощью ВТБ Онлайн" },
  { "style": "list", "text": "Переводом по номеру телефона" },
  { "style": "list", "text": "Переводом с карт и счетов других банков по номеру карты" },
  { "style": "header", "text": "Для этого нужно соблюдать два условия:" },
  { "style": "list", "text": "Через банкоматы с NFC и функцией внесения наличных" },
  { "style": "list", "text": "В обычной кассе в любом отделении ВТБ" }
];

const prepared = [];

answer.forEach(({ style, text }) => {
  const isListStyle = style === 'list';
  const pIdx = prepared.length - 1;
  const previous = prepared?.[pIdx];

  if (isListStyle && previous?.style === 'list') {
		prepared[pIdx].text = [ ...previous?.text, text ];
  } else {
		prepared.push({
    	style,
			...(isListStyle ? { text: [text] } : { text }),
    });
  }
});

console.log({ prepared });