检查if语句中的多个数组元素

时间:2016-06-02 20:12:20

标签: javascript arrays

我正在写一个简单的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'),但这不起作用。有什么建议吗?

2 个答案:

答案 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'))