使用 for 循环在每个 div 中附加 5 个项目

React append 5 items in each div using for loop

我有这个推送和显示 30 项的道具循环

var newArr = [];
for (var key in this.props.data) {

     // for (var i = start; i < start + 5; i++) {
     //     if (i > array.length) return;

     //     $("#output").append(array[k]);
     // }

     newArr.push(<div><Dates key={key} /></div>);
}

我需要连续显示这 5 个项目,所以将它包装在每个 div 中的 5 个项目,例如 jQuery 可能注释掉的代码?

可能不是最好的算法,但我想你想做这样的事情:

var dates = [];
var rows = [];
for (var key in this.props.data) { 
  if (this.props.data.hasOwnProperty(prop)) {
    dates.push(<Dates key={key} />);

    if(dates.length === 5) {
      rows.push(
        <div>
          {dates}
        </div>
      );

      dates = [];
    }
  }
}

// final step
rows.push(
  <div>
    {dates}
  </div>
);

以上答案有效,所以这实际上只是代码高尔夫,但这是我的破解方法。使用 forEach 让您不必担心索引计算错误,代码说明最后一行不完整。

var newArr = [], row=[], rowLength=5;
this.props.data.forEach((item, index) => {
  row.push(item);
  if ((row.length === rowLength) || index === this.props.data.length - 1) {
    newArr.push(<div>{row}</div>);
    row = [];
  }
})