let winningCombination = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9],[1,5,9],[3,5,7], [1,5,9]] let o = [5,8,6,7] let x = [1,2,3,4,9]; var xMark = "X" var oMark = "O" function checkWinner(){ if(winningCombination.some(item => item.every((val,index) => val === o[index]))){ winner = oMark; }else if (winningCombination.some(item => item.every((val,index) => val === x[index]))){ winner = xMark; } return winner; }¿Cómo verifico si la matriz 1d coincide con la matriz 2d? cuando la matriz x o o se hace más grande, el método checkWinner no funciona
Su código para verificar si las marcas de un equipo son una combinación ganadora depende del orden. Comprueba si el primer movimiento del jugador es igual al primer movimiento de la combinación ganadora, aunque el orden no importa en piedra, papel o tijera. Tampoco pasará más allá del tercer movimiento.
Una solución sería hacer algo como:
winningCombination.some(item => item.every((val) => o.includes(val))O incluso más corto:
winningCombination.some(item => item.every(o.includes)O en inglés: para cada combinación ganadora, verifique cada marca necesaria y vea si esa marca está incluida EN CUALQUIER PARTE de la lista de marcas que el jugador ha establecido.