Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS教程代码移植的ES6代码不工作_Javascript_Reactjs - Fatal编程技术网

Javascript ReactJS教程代码移植的ES6代码不工作

Javascript ReactJS教程代码移植的ES6代码不工作,javascript,reactjs,Javascript,Reactjs,在React中,JS有一个关于使用React构建tic-tac-toe游戏的教程。有一个功能可以检查是否做出了一个获胜的动作 function calculateWinner(squares) { const lines = [ [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6], ]; for (l

在React中,JS有一个关于使用React构建tic-tac-toe游戏的教程。有一个功能可以检查是否做出了一个获胜的动作

function calculateWinner(squares) {
  const lines = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];
  for (let i = 0; i < lines.length; i++) {
    const [a, b, c] = lines[i];
    if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
      return squares[a];
    }
  }
  return null;
}
但是当我尝试时,它没有找到一个胜利,所以我求助于旧代码

虽然第二次编辑失败了,我不知道为什么

function calculateWinner(squares) {
    const lines = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]];
    for (let line in lines) {
        console.log(line);
        const [a, b, c] = line;
        if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
            return squares[a];
        }
    }
    return null;
}
运行此代码。您的
变量是数组的索引,而不是内部数组(例如[0,1,2])

编辑:


正如注释中提到的,正确的解决方案是
让行中的行
而不是中的

在您使用的第一个代码中,for循环可以以适当的方式超过2d数组 下面的示例程序将生成类似的输出

    [
      0,
      1,
      2
    ] 
const行=[
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6],
];
for(设i=0;i}
您的代码仍然是
让行进入行中
,您的意思是
让行进入行中
?我刚才指出了代码无法正常工作的原因。你说得对。是的,为了返回内容而不是索引,它应该是
的(让行的行)
是的,每个循环的一个点一次用于每个元素
    [
      0,
      1,
      2
    ]