gpt4 book ai didi

javascript - Tic-Tac-Toe Javascript,无法确定循环或函数来检查获胜者

转载 作者:行者123 更新时间:2023-11-29 23:57:51 24 4
gpt4 key购买 nike

Tic-Tac-Toe 是我正在处理的代码,但我的问题只是一般性问题。我如何着手检查一个整数数组与一个包含多个整数子数组的大数组。我只想找到出现在“combos”数组之一中的“sel”中的数字。到目前为止,我已经尝试过滤、查找、indexOf 和映射,但我从来没有得到代码来“查找”来自“sel”的相关数字......我知道我可以使用以下代码来完成工作完成:

if(document.getElementById('1') && 
document.getElementById('2') &&
document.getElementById('3') == 'X'){
alert('You Win')}

但这似乎是多余的,我想知道解决这个问题的有效方法。请不要建议任何 Jquery,我使用的是没有任何库的 Vanilla JS。并且请确保在将我的问题标记为重复之前检查我的问题和其他作者,因为我已经研究了这个问题几个小时,但找不到类似的问题。如果有的话,请给我指出正确的方向。我不认为我的其余代码是相关的,但如果您仍然希望看到它,我会附上。

function play(player) {

var arr = [];
var player;
var computer;
var turn1 = ['X', 'O'];
var check = [];
var p = document.getElementById('page');

player = player.value;
p.innerHTML = 'You Will Play As' + '<br>' + player;
computer = turn1.filter(v => v !== player);
mouseD();

function mouseD() {
var div = document.getElementsByTagName('div');
arr = Array.from(div);
for (var i in arr) {
arr[i].onmousedown = function() {
var values = this.getAttribute('id');
if (check.indexOf(values) > -1) {
alert('select a different box');
} else {
this.innerHTML = player;
check.push(values);
}
}
arr[i].onmouseup = function() {
var temp = [];
var arr1 = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];
for (var j in arr1) {
if (check.indexOf(arr1[j]) === -1) temp.push(arr1[j]);
}
for (j in check) {
if (arr1.indexOf(check[j]) === -1) temp.push(check[j]);
}
var some = Math.floor(Math.random() * temp.length);
var all = temp[some];
var vals = document.getElementById(all);
vals.innerHTML = computer;
check.push(all);
winner();
}
function winner() {
var combos = [
['1', '2', '3'],
['4', '5', '6'],
['7', '8', '9'],
['1', '4', '7'],
['2', '6', '8'],
['3', '6', '9'],
['3', '5', '7'],
['1', '5', '9']
];
}
}
}
}
.box {
display: inline-block;
width: 8%;
height: 100px;
background-color: lightblue;
margin-bottom: auto;
border: 5px slategray solid;
left: 0;
right: 0;
vertical-align: top;
text-align: center;
font-size: 40px;
}

section {
margin-top: 40px;
margin-left: 50px;
}
<body>
<p id='page'>
<button class='button' id='X' value='X' onclick='play(this)'>X
</button>
<button class='button' id='O' value='O' onclick='play(this)'>O
</button>
</p>
<br>
<section>
<div id='1' class='box' value='1'>
</div>
<div id='2' class='box' value='2'>
</div>
<div id='3' class='box' value='3'>
</div>
</br>
<div id='4' class='box' value='4'>
</div>
<div id='5' class='box' value='5'>
</div>
<div id='6' class='box' value='6'>
</div>
<br>
<div id='7' class='box' value='7'>
</div>
<div id='8' class='box' value='8'>
</div>
<div id='9' class='box' value='9'>
</div>
</section>
</body>

var combos = 
[['1', '2', '3'],
['4', '5', '6'],
['7', '8', '9'],
['1', '4', '7'],
['2', '6', '8'],
['3', '6', '9'],
['3', '5', '7'],
['1', '5', '9']];

var sel = ['1','2','6','8'];

最佳答案

您可以使用 some()every()indexOf() 执行此操作,它将返回 true/false 作为结果。

var combos = 
[['1', '2', '3'],
['4', '5', '6'],
['7', '8', '9'],
['1', '4', '7'],
['2', '6', '8'],
['3', '6', '9'],
['3', '5', '7'],
['1', '5', '9']];

var sel = ['1','2','6','8'];

var result = combos.some(function(ar) {
return ar.every(function(e) {
return sel.indexOf(e) != -1
})
})

console.log(result)

这是使用箭头函数和 Array#includesES6/ES7 的较短版本

var result = combos.some((ar) => ar.every((e) => sel.includes(e)))

关于javascript - Tic-Tac-Toe Javascript,无法确定循环或函数来检查获胜者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41279553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com