javascript - 使用 array.includes() 检查数组中是否有超过 2 个内容

标签 javascript arrays

我正在制作一个基于纯 JS 的井字游戏,但是在为玩家定义获胜条件时,我希望它在条件匹配时提醒用户。

当选中某个框时,如果 . X 玩的话它会变成红色,如果轮到 O 则变成蓝色,它还将盒子元素的 id 注册到一个数组中,该数组包含所有被占用的盒子,也取决于盒子是红色还是蓝色,它还标记了 id以及 0 , 1 (0 是红色 1 是蓝色)

所以数组看起来像这样 (11,0 22,1 33,0) 11 是第一行第一列 0 表示红色占据了该位置 (red = X)

过去,我尝试过 array.includes 来检查已单击的框是否在一行或对 Angular 线上,以及它们是否也被同一玩家检查。 我使用了 and 运算符,因此它会检查同一玩家是否连续检查了 3 个。这样,只有当连续三个都被检查时,它才会提醒获胜。我已将 bool 值存储在 redwincond bluewincond

function logic(clickedArr) {
    redwinCond = clickedArr.contains(("11,0") && ("22,0") && ("33,0"));

    bluewinCond = clickedArr.contains(("11,1") && ("22,1") && ("33,1"));

    console.log(bluewinCond, redwinCond)

    if (redwinCond === true) {
        alert("Red wins !")
    } else if (bluewinCond === true) {
        alert("Blue wins !")
    } else {

    }    
}

示例 redwinCond = clickedArr.contains(("11,0") && ("22,0") && ("33,0")); 预期结果:所有 3 个都被相同颜色的警报用户选中后

结果:仅当单击指定的第三个框 (33,0) 时才会发出警报。不检查其他 2 个是否也已检查

最佳答案

使用每个:

["11,0", "22,0", "33,0"].every(s => clickedArr.includes(s));

关于javascript - 使用 array.includes() 检查数组中是否有超过 2 个内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739406/

相关文章:

Javascript 将数组传递给另一个函数

JavaScript - 将数组中的每 3 个项目包装到一个 div 中

php - 如何在没有索引的情况下提取数组的键和值

javascript - Aurelia 绑定(bind) Change.delegate 未触发(JQueryUI Datepicker)

javascript - Coffeescript:数组元素匹配另一个数组

javascript - 更新 Typeahead 本地结果集

javascript - 为什么我的 ajax 请求会去掉 '\' 反斜杠字符?

javascript - 如何通过 coldfusion 或 javascript 查找浏览器是否支持 flash 播放器?

c - 从 C 中的 1 个输入行读取多个值

c++ - OpenGL 生成三角形网格