javascript - 在 React Js 中实现两个 for 循环以创建用于井字游戏的 3X3 方形矩阵框

标签 javascript reactjs tic-tac-toe

我正在关注官方网站上的 React Js 教程,该教程帮助我们构建 tic-tac-toe game .方框是通过硬编码所有方 block 创建的,如下所示:

render(){
  return (
    <div>
      <div className = "board-row">
        {this.renderSquare(0)}
        {this.renderSquare(1)}
        {this.renderSquare(2)}
      </div>
      <div className = "board-row">
        {this.renderSquare(3)}
        {this.renderSquare(4)}
        {this.renderSquare(5)}
      </div>
      <div className = "board-row">
        {this.renderSquare(6)}
        {this.renderSquare(7)}
        {this.renderSquare(8)}
      </div>
    </div>
  );
}

我设法通过使用 for 循环来缩短代码,如下所示:

render(){
  let sqrRen = [];
  for(let i = 0; i < 9; i=i+3){
    sqrRen.push(<div className = "board-row">
      {this.renderSquare(0+i)}
      {this.renderSquare(1+i)}
      {this.renderSquare(2+i)} 
    </div>);
  }
  return (
    <div>
        {sqrRen}
    </div>
  );
}

但我还想使用另一个 for 循环在每一行中生成正方形,如下所示:

render(){
  let sqrRen = [];
  for(let i = 0; i < 9; i=i+3){
    sqrRen.push(<div className = "board-row">
      {
        for(let j=0;j<3;j++){
        this.renderSquare(j+i)
        }
      }
    </div>);
  }

  return (
    <div>
      {sqrRen}
    </div>
  );
}

但这行不通。我收到以下错误: error snippet

关于如何使用两个 for 循环有什么建议吗?

最佳答案

因为我也在寻找这个,所以接受的答案为我指明了正确的方向。虽然我在没有 lodash 的情况下做了一个稍微不同的实现。

render() {
  const rowCount = 3, colCount = 3;
  return (
    <div>
      {[...new Array(rowCount)].map((x, rowIndex) => {
        return (
          <div className="board-row" key={rowIndex}>
            {[...new Array(colCount)].map((y, colIndex) => this.renderSquare(rowIndex*colCount + colIndex) )}
          </div>
        )
      })
      }
    </div>
  );
}

关于javascript - 在 React Js 中实现两个 for 循环以创建用于井字游戏的 3X3 方形矩阵框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45572856/

相关文章:

javascript - 尝试使用具有顺序 promise 的 for 循环的问题 (q)

javascript - 将图像 'src' 添加到 '<a>' 标签

javascript - Typescript $inject $timeout into a directive ...在 Controller 中工作,而不是在链接中

javascript - React Native - 如何水平滑动卡片并给它们留出边距

javascript - Material-UI 中的 Mask Textfield 组件

c - 井字棋 AI 选择了错误的位置

javascript - 使用angular js检查井字游戏中是否获胜者的逻辑

c - C 中的 Tic Tac Toe AI 问题

javascript - 在 Android 上从 Web 打印

gruntjs - JSX 转换器使用 React.createElement ("h1", null) 而不是 React.DOM.h1(null)