Episode - https://laracasts.com/series/real-time-games-with-laravel/episodes/4
Victory can be calculated by using my dear friend reduce, always good to do practice with this one.
1<script> 2const fillSquare = (index) => { 3 //... 4 5 const winningLine = lines.map((line) => line.reduce((carry, index) => carry + boardState.value[index], 0)) 6 .filter((sum) => Math.abs(sum) === 3); 7 8 //... 9}10</script>
lines
is an array of arrays. Each nested array represents a possible winning line: all rows (for example [0, 1, 2]), all columns (for example [0, 3, 6]) and the two crosses (for example [0, 4, 8]). Those are the ones we need to check to find the winner.