我正在写一个简单的tic tac toe游戏,我正在尝试检查不同的胜利状态。不同的磁贴设置在一个数组中,所以检查我有三个顶部空间的胜利
if (tableArr[0].hasClass('userTaken') && tableArr[1].hasClass('userTaken') && tableArr[2].hasClass('userTaken')){
select(); //ends game
}
我正在寻找缩短此方法的方法,我尝试了tableArr[0,1,2].hasClass('userTaken')
,但这不起作用。有什么建议吗?
答案 0 :(得分:3)
您可能会使用every
,但您也需要对数组进行切片。举个例子:
tableArr.slice(0, 3).every(x => x.hasClass('userTaken'))
因此,使用slice
获取数组的前三个元素,然后every
检查测试是否通过了每个元素。
当然,如果这是tic,tac,toe,你也需要检查对角线,这对.slice
来说比较棘手。您也可以使用map
,例如
[0,1,2].map(idx => tableArr[idx]).every(x => x.hasClass('userTaken'))
答案 1 :(得分:0)
另外,您可以检查某个元素是否没有some的类:
tableArr.slice(0, 3).some(x => !x.hasClass('userTaken'))