首页 > 解决方案 > if 语句在确定井字游戏中的获胜者时不起作用

问题描述

我对我的代码中的“if statemenet”有一个小问题。我真的不明白为什么这不能正常工作。好的.. 所以要完成我的井字游戏,我只需要编写一个函数来确定游戏的获胜者。这就是问题所在。我有Squares-object javascript 数组,其中包含对象并且它处于状态。这个带有对象的数组用于在我的游戏板上创建一个正方形网格,它还用于其他一些事情,例如检查正方形字段是否已满,在单击的 suqares 上创建 X 和 O 等。

这里是:

export let squares = [
    {
        id:'sq1',
        content:''
    },
    {
        id:'sq2',
        content:''
    },
    {
        id:'sq3',
        content:''
    },
    {
        id:'sq4',
        content:''
    },
    {
        id:'sq5',
        content:''
    },
    {
        id:'sq6',
        content:''
    },
    {
        id:'sq7',
        content:''
    },
    {
        id:'sq8',
        content:''
    },
    {
        id:'sq9',
        content:''
    },
];

正如我所说,多亏了这个数组,我可以在棋盘游戏上创建一个正方形网格,每个正方形从左到右都有自己的 ID(sq1、sq2、sq3 等)。现在,当我单击 id 为 SQ2 的正方形时,然后在存储此 sq2 属性的对象中,有内容属性被填充为“X”或“O”,具体取决于另一个状态,即 playerTurn 状态。如果玩家轮数为 1,则输入“内容”X,如果为 2,则输入“O”。这工作正常。我正在用 console.log 检查这个。言归正传……我想使用“if 语句”来选择游戏的获胜者,如下所示:

        if(squares[0].content && squares[1].content && squares[2].content  === 'X') {
            console.log('winn');
        }

那里发生了一些奇怪的事情,我无法弄清楚。因此,在这个 if 语句中,我将多个必须满足的条件放在了 console.log('winn') 中。因此,如果 ID 为 sq1 sq2 和 sq3 的方格填充有“X”(内容:“X”),那么我们应该在控制台中看到“winn”。并且有一个问题。当我将 X 放在那些字段上时,它可以工作,但是......如果我在板上的任何位置放置更多的“X”和“O”,“if 语句”无论如何都会在控制台中显示“winn”,即使我指出的字段不包含 XXX,而是例如 XO X。为什么会发生这种情况?

标签: javascriptarraysreactjsobjectif-statement

解决方案


您是否要检查所有正方形是否都是 X?那么你的 if 语句必须是这样的

if(squares[0].content === 'X' && squares[1].content === 'X' && squares[2].content  === 'X') {
            console.log('winn');
        }

推荐阅读