@SerjSkachkov

Как из строки сделать объект?

Как из строки сделать объект? Ключ до первого :, остальное значение.
Свойства "актер" и "формат" должны быть массивами.

Title: 2001: A Space Odyssey
Release Year: 1968
Format: DVD
Stars: Keir Dullea, Gary Lockwood, William Sylvester, Douglas Rain

Title: Harvey
Release Year: 1950 
Format: DVD
Stars: James Stewart, Josephine Hull, Peggy Dow, Charles Drake

Title: Knocked Up
Release Year: 2007
Format: Blu-Ray
Stars: Seth Rogen, Katherine Heigl, Paul Rudd, Leslie Mann
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Регулярные выражения
const arr = useMemo(() => {
  const multiple = [ 'Format', 'Stars' ];
  return str
    .split('\n\n')
    .map(n => n
      .split('\n')
      .reduce((acc, m) => (
        m = m.split(/(?<=^[^:]+): /),
        acc[m[0]] = multiple.includes(m[0]) ? m[1].split(', ') : m[1],
        acc
      ), {}));
}, [ str ]);

<ul>
  {arr.map(n => (
    <li>
      <h3>{n.Title}</h3>
      <div>Year: {n['Release Year']}</div>
      <div>Format: <ul>{n.Format.map(m => <li>{m}</li>)}</ul></div>
      <div>Stars: <ul>{n.Stars.map(m => <li>{m}</li>)}</ul></div>
    </li>
  ))}
</ul>

https://jsfiddle.net/s7thmcn8/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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