我正在写一个简单的井字游戏,我试图检查不同的获胜状态。将不同的图块设置在一个数组中,以便检查我是否拥有三个最高空间

if (tableArr[0].hasClass('userTaken') && tableArr[1].hasClass('userTaken') && tableArr[2].hasClass('userTaken')){
    select(); //ends game
}


我正在寻找一种缩短此时间的方法,我尝试了tableArr[0,1,2].hasClass('userTaken'),但是没有用。有什么建议么?

最佳答案

您可能会为此使用every,但也需要对数组进行切片。举个例子:

tableArr.slice(0, 3).every(x => x.hasClass('userTaken'))


因此,使用slice获取数组的前三个元素,然后every检查每个元素是否通过了测试。

当然,如果这是井字,TAC,脚趾,则也需要检查对角线,使用.slice会比较麻烦。您也可以为此使用map,例如

[0,1,2].map(idx => tableArr[idx]).every(x => x.hasClass('userTaken'))

10-07 16:08