【问题标题】:Transfer raw json data to html table in reactjs将原始 json 数据传输到 reactjs 中的 html 表
【发布时间】:2021-01-01 22:30:55
【问题描述】:

我正在寻找一种方法来在我的反应应用中显示如下图所示的表格 https://www.depicus.com/swim-bike-run/pace-conversion-chart

这是我传输到 JSON 的原始数据。

我一直在纠结如何在我的应用中显示所有数据,比如第一张图片。

这是我尝试过的代码。

        <table>
            <tbody>
                <tr>
                    {chartJSON.title.map((data, i) => <th key={i}>{data[i]}</th>)}
                </tr>
                
                {chartJSON.paceChart.map((data, index) => {
                    return <tr key={index}>{data[0]}</tr>
                })}
            
                {chartJSON.paceChart.map((data, index) => {
                    return <tr key={index}>{data[1]}</tr>
                })}
            </tbody>
        </table>

这是一些原始数据

{
"title": [
    ["KM PER HOUR", "MILES PER HOUR", "MINS PER KM", "MINS PER MILE", "5K", "10K", "HALF MARATH0N", "MARATHON"]
],
"paceChart": [
    ["7.00kph", "4.35mph", "8:34", "13:40", "00:42:51", "01:25:42", "03:00:51", "06:01:42"],
    ["7.10kph", "4.41mph", "8:27", "13:36", "00:42:15", "01:24:30", "02:58:18", "05:56:37"],
    ["7.20kph", "4.47mph", "8:20", "13:25", "00:41:40", "01:23:20", "02:55:50", "05:51:40"],
    ["7.30kph", "4.54mph", "8:13", "13:14", "00:41:05", "01:22:11", "02:53:25", "05:46:50"]
   ]
}

谁能帮帮我?谢谢!

【问题讨论】:

  • 不要使用图像来显示文本数据。您可以在帖子中将 JSON 数据写为文本。
  • 抱歉,我刚刚添加了一些我创建的原始数据

标签: javascript html arrays json reactjs


【解决方案1】:

这是更新的答案。我删除了正文中的重复地图。

    <table>
  <tbody>
    <tr>
      {chartJSON.title[0].map((data, i) => {
        return <th key={i}>{data}</th>;
      })}
    </tr>

    {chartJSON.paceChart.map((data, index) => {
      return (
        <tr>
          {data.map((data2, i) => {
            return <td key={i}>{data2}</td>;
          })}
        </tr>
      );
    })}
  </tbody>
</table>;

【讨论】:

  • 它接近我的答案。但是所有的词都被打乱了。有任何解决这个问题的方法吗? imgur.com/a/8y5cKEL
【解决方案2】:

在您的 JSON 对象中,您使用的是二维数组。我用一维数组替换了它,因为没有必要使用二维数组。您在某些时候以错误的方式使用索引,我已经解决了这个问题。

const chartJSON = JSON.parse(`{
"title": ["KM PER HOUR", "MILES PER HOUR", "MINS PER KM", "MINS PER MILE", "5K", "10K", "HALF MARATH0N", "MARATHON"]
,
"paceChart": [
["7.00kph", "4.35mph", "8:34", "13:40", "00:42:51", "01:25:42", "03:00:51", "06:01:42"],
["7.10kph", "4.41mph", "8:27", "13:36", "00:42:15", "01:24:30", "02:58:18", "05:56:37"],
["7.20kph", "4.47mph", "8:20", "13:25", "00:41:40", "01:23:20", "02:55:50", "05:51:40"],
["7.30kph", "4.54mph", "8:13", "13:14", "00:41:05", "01:22:11", "02:53:25", "05:46:50"]
   ]
}`);

const table =
<table>
  <tbody>
     <tr>
        {chartJSON.title.map((data, i) => <th key={i}>{data}</th> )}
     </tr>
                
        {
        
        chartJSON.paceChart.map((rowData,rowIndex)=> {
           return <tr key={rowIndex}> 
             { 
             rowData.map(cellData=> <td> {cellData} </td>) 
             } 
           </tr>
          })
          
        }
           
   </tbody>
</table>

const root = document.querySelector('body');

ReactDOM.render(table,root);
td,th,table{
  text-align:center;
  border:1px solid dodgerblue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

【讨论】:

    【解决方案3】:

    试试这个

     render() {
      
        return (
           <table>
                <tbody>
                    <tr>
                        {this.state.chartJSON.title.map((data, i) => <th key={"h${i}"}>{data}</th>)}
                    </tr>
                    
                    {
                    
               this.state.chartJSON.paceChart.map((row, index)=> 
              
              <tr>{row.map((item,i)=> <td key={i}>{item}</td>)}</tr>
                        
                    )}
                
                  
                </tbody>
            </table>
        )
      }
    

    fiddler

    【讨论】:

      猜你喜欢
      • 2014-08-11
      • 2012-10-23
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 2013-12-31
      相关资源
      最近更新 更多