Javascript ReactJS教程代码移植的ES6代码不工作
在React中,JS有一个关于使用React构建tic-tac-toe游戏的教程。有一个功能可以检查是否做出了一个获胜的动作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
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
]