2016-06-02 7 views
0

Ich schreibe ein einfaches Tic Tac Toe-Spiel, und ich versuche, für verschiedene Win-States zu überprüfen. Die verschiedenen Fliesen sind in einer Anordnung, so setzen Sie sich für die drei oberen Räume für einen Sieg zu überprüfen Ich habeÜberprüfen mehrerer Array-Elemente in if-Anweisung

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

ich für eine Art und Weise bin auf der Suche diese zu verkürzen, habe ich versucht tableArr[0,1,2].hasClass('userTaken') aber das hat nicht funktioniert . Irgendwelche Vorschläge?

Antwort

3

Sie könnten dafür möglicherweise every verwenden, aber Sie müssten auch das Array in Scheiben schneiden. Als Beispiel:

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

So nehmen die ersten drei Elemente des Arrays slice, dann every Kontrollen verwendet, dass der Test für jede von ihnen verläuft.

Natürlich, wenn dies Tic, Tac, Toe ist, müssen Sie Diagonalen auch überprüfen, die mit .slice schwieriger ist. Sie könnten dafür auch map verwenden, z.B.

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

Sie können auch überprüfen, ob ein Element mit some nicht die Klasse haben:

tableArr.slice(0, 3).some(x => !x.hasClass('userTaken')) 
Verwandte Themen