Отображение данных таблицы 2D-массива

У меня немного странная проблема, которую я не могу решить. Мне нужно отобразить таблицу с помощью реакции - однако моя структура данных такова, что мне нужно, чтобы имя с первого уровня было заголовками таблицы - затем мне нужно сопоставить данные, связанные с этим заголовком, в правильные ячейки в таблице.

Вот мои данные

[{
    "cell_id": 1,
    "step_data": [{
      "width": 1920,
      "name": "bruce",
    }, {
      "width": 2236,
      "name": "ben",

      }],
        "cell_name": " boys names"
      },
{
        "cell_id": 2,
        "step_data": [{
          "width": 1920,
          "name": "grace",
        }, {
          "width": 2236,
          "name": "megan",

        }],
        "cell_name": "girls names"
      }

Чтобы сопоставить заголовки таблицы, я делаю это, что динамически отображает заголовки, однако я не могу поместить данные под правильные заголовки, поскольку все они находятся в одной строке.

Есть идеи, как мне это сделать?

Моя желаемая задача - иметь таблицу с двумя заголовками, имена мальчиков и имена девочек - мне нужно, чтобы step_data из имен мальчиков были строками под заголовком имени мальчика, а данные шага из имен девочек были под заголовком имен девочек.

<table className = "table">
    <tbody>
      <tr>
        {this.props.data.map((item, key) => <th key = {key}>{item.cell_name}</th>
        )}

      </tr>
      {this.props.data.map(data => data.map((z, key) => <td key = {key}>{z.name}</td>))}

      <tr>

      </tr>

    </tbody>
  </table>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
88
1

Ответы 1

{[
  ...Array( // get the number of rows you need to create
    Math.max(...this.props.data.map(({ step_data }) => step_data.length))
  ).keys()
].map(i => (
  <tr key = {i}>
    {this.props.data.map(({ step_data, cell_name }) => (
      <td key = {cell_name}>{(step_data[i] || {}).name}</td>
    ))}
  </tr>
))}

Не могли бы вы объяснить синтаксис <td key = {cell_name}> {(step_data [i] || {}). Name} </td> Не уверен, что я полностью понимаю, что происходит?

marcuspetty 23.04.2018 11:04

Он создает td со значением step_data[i].name и предотвращает сбой, если step_data[i] не определен (это происходит, если один массив длиннее другого).

Roy Wang 23.04.2018 11:20

Другие вопросы по теме