Javascript React-嵌套映射以检索json数据

Javascript React-嵌套映射以检索json数据,javascript,json,reactjs,Javascript,Json,Reactjs,所以我对javascript有点陌生,通常会做出反应,所以我一直在练习。现在,我正试图检索JSON数据,并使用它来呈现多个HTML块,就像一个基本的时间表一样。例如,最初,我的JSON格式如下 { "saturday":[ { "event": 1 }, { "event": 2 } ] } 我使用如下函数映射JSON数组的每个部分 initialize = events => { return events.map(this.createBlo

所以我对javascript有点陌生,通常会做出反应,所以我一直在练习。现在,我正试图检索JSON数据,并使用它来呈现多个HTML块,就像一个基本的时间表一样。例如,最初,我的JSON格式如下

{
  "saturday":[
  {
    "event": 1
  },
  {
    "event": 2
  }
 ]
}
我使用如下函数映射JSON数组的每个部分

initialize = events => {
  return events.map(this.createBlock)
}
这里createBlock是另一个返回以下内容的函数

createBlock = events =>{
 return(
    <Scheduled
       event={events.event}   
    />
 );
其中数据是导入的JSON资产

但是现在我想在嵌套的JSON数据上做同样的事情。所以看起来是这样的。所以现在不是直接创建多个事件块。它将生成多个时间块,每个时间块中都包含多个事件块

"saturday":{
  "time":{
    "9:00": [
      {
        "event": 1
      },
      {
        "event": 2
      }
    ],
    "10:00":[
      {
        "event": 1
      },
      {
        "event": 2
      }
    ]
  }
}

我只是不知道该怎么做。我在考虑一个嵌套的地图,但不确定这是否可行。如有任何建议/帮助,将不胜感激,谢谢

当然可以使用嵌套贴图

initialize=计时=>{
返回timings.map(this.createEvents)
}

然后

createEvents=events=>{
return events.map(this.createBlock)
}

最后


{this.initialize(data.saturday)}

在第一级,您有一个对象,在第二级是数组,因此为了使用map,您需要在第一级使用

initialize = day => {
  return Object.entries(day.time).map(this.createBlock)
}

createBlock = ([time, events]) =>{
 return (
     <div>
        <p>{time}</p>
       {events.map(this.createEvent)}
     </div>
 );

createEvent = event =>{
 return(
    <Scheduled
       event={event.event}   
    />
 ); 
initialize=day=>{
返回Object.entries(day.time).map(this.createBlock)
}
createBlock=([时间,事件])=>{
返回(
{time}

{events.map(this.createEvent)} ); createEvent=event=>{ 返回( );
const数据={
“星期六”:{
“时间”:{
"9:00": [{
“事件”:1
},
{
“事件”:2
}
],
"10:00": [{
“事件”:1
},
{
“事件”:2
}
]
}
}
}
计划常数=({
事件
}) => {
返回{
事件
}
} 类应用程序扩展了React.Component{ 初始化=天=>{ 返回{ Object.entries(day.time).map(this.createBlock) }
} createBlock=([时间,事件])=>{ 报税表(< div键={ 时间 } > < p>{ 时间 }

{ events.map(this.createEvent) } < /div> ); } createEvent=event=>{ 报税表(< 计划密钥={ 事件 } 事件={ 事件 } /> ) } render(){ 报税表(< div>{ 此。初始化(数据。星期六) } < /div> ) } } ReactDOM.render(,document.getElementById('App'));


您应该使用object.keys从对象中获取一组键,然后映射。再次感谢您的帮助。这比我尝试的方法更有意义。
initialize = day => {
  return Object.entries(day.time).map(this.createBlock)
}

createBlock = ([time, events]) =>{
 return (
     <div>
        <p>{time}</p>
       {events.map(this.createEvent)}
     </div>
 );

createEvent = event =>{
 return(
    <Scheduled
       event={event.event}   
    />
 );