Javascript 在ReactJs中循环通过数组

Javascript 在ReactJs中循环通过数组,javascript,arrays,loops,for-loop,reactjs,Javascript,Arrays,Loops,For Loop,Reactjs,我试图循环遍历数组并呈现元素中的数据。我正在使用ReactJs 我的数据阵列: var data = [{ type: "Academic", time: "2015 - 2016", title: " MSc Software Engineering", place: "University of Oxford", description: "Lorem impsum", gallery: [ {url:

我试图循环遍历数组并呈现元素中的数据。我正在使用ReactJs

我的数据阵列:

var data = [{
      type: "Academic",
      time: "2015 - 2016",
      title: " MSc Software Engineering",
      place: "University of Oxford",
      description: "Lorem impsum",
      gallery: [
        {url: "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash2/v/t1.0-1/p160x160/10923196_10204583699694173_6145976884213630323_n.jpg?oh=bd235908314ecf0ab5afa8d3f92f5abf&oe=567B51F9&__gda__=1450897067_285c7c8c720c0f130453b37e9ff9b2f8"}
      ]
    }
应将数据推送到的数组:

var events = []
循环:

我不是一个真正的JS专业人士,所以我可能做得不对。你知道这里怎么了吗?非常感谢

也许可以试试:

for (var i = 0; i < data.length; i++) {
      var directions;
      if (data[i] % 2 == 0) {
        directions = "direction-r";
      } else {
        directions = "direction-l"
      }
      events.push(
        <li>
          <TimelineEvent type={data[i].type}
            time = {data[i].time}
            title = {data[i].title}
            place = {data[i].place}
            description = {data[i].description}
            direction = {directions}/>
        </li>
      )
    } 
for(变量i=0;i

)
} 

另外,除了可以使用循环或for循环之外,您还应该做一件事,即更改代码行

if (data[i] % 2 == 0)

如果(i%2==0),则它应该是
,因为
data[i]
将从
数据
数组返回对象

它已经得到了回答,但是如果您想尝试一些功能代码:

var events = data.map(function (datum, index) {
    var directions = 'direction-'; 
    directions += index % 2 === 0 ? 'r' : 'l';
    return (
         <li>
             <TimelineEvent 
                 type={datum.type}
                 time={datum.time}
                 title={datum.title}
                 place={datum.place}
                 description={datum.description}
                 direction={directions} 
              >
                 { datum.gallery.map(function (link) {
                     return (
                         <a href="#">
                           <img 
                               className="timelineGalleryImage" 
                               src={link.url} />
                         </a>
                     );
                 } }
             <TimelineEvent />
        </li>
    );
})
var事件=data.map(函数(数据、索引){
变量方向='方向-';
方向+=索引%2==0?'r':'l';
返回(
  • {datum.gallery.map(函数(链接)){ 返回( ); } }
  • ); })
    谢谢,这似乎奏效了。但是部分:if(data[i]%2==0){directions=“direction-r”}else{directions=“direction-l”}似乎没有任何影响。它是应该的吗?@kostbone上面的答案将修复该部分感谢gcedo,使用这种方法代码看起来更干净。我得到错误:TypeError:无法读取未定义的属性“map”。并且,您是否可以解释我如何在库中迭代:[]对于每个事件?我试图将其显示为存在第一个错误,因为数据未定义,请在该点之前检查。我已更新了答案,我试图了解您想要实现的目标。
    for (var i = 0; i < data.length; i++) {
          var directions;
          if (data[i] % 2 == 0) {
            directions = "direction-r";
          } else {
            directions = "direction-l"
          }
          events.push(
            <li>
              <TimelineEvent type={data[i].type}
                time = {data[i].time}
                title = {data[i].title}
                place = {data[i].place}
                description = {data[i].description}
                direction = {directions}/>
            </li>
          )
        } 
    
    if (data[i] % 2 == 0)
    
    var events = data.map(function (datum, index) {
        var directions = 'direction-'; 
        directions += index % 2 === 0 ? 'r' : 'l';
        return (
             <li>
                 <TimelineEvent 
                     type={datum.type}
                     time={datum.time}
                     title={datum.title}
                     place={datum.place}
                     description={datum.description}
                     direction={directions} 
                  >
                     { datum.gallery.map(function (link) {
                         return (
                             <a href="#">
                               <img 
                                   className="timelineGalleryImage" 
                                   src={link.url} />
                             </a>
                         );
                     } }
                 <TimelineEvent />
            </li>
        );
    })