首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数组中搜索相同的不同数字

在数组中搜索相同的不同数字
EN

Stack Overflow用户
提问于 2019-01-11 16:32:24
回答 2查看 48关注 0票数 2

我在做Tac脚趾游戏,我有个问题。我注意到,如果我开始从“0”开始计数,可获胜的情况是有三个数字相同(例如,"0,1,2"(1-0=1,2-1=1)或"0,4,8"(4-0=4,8-4=4)或"1,4,7"(4-1=3,7-4=3)。数字是从0到8的方框坐标。

不知道如何检查是否有这样的数字。

代码语言:javascript
运行
复制
//html
<div class="container">
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box"></div>
</div>


//js
const BOXES = document.querySelectorAll('.box');
let turn = true;
let opened = [1, 1, 1, 1, 1, 1, 1, 1, 1];
let x = [];
let o = [];

for (let i = 0; i < BOXES.length; i++) {
    BOXES[i].addEventListener('click', () => {
        if (turn == true && opened[i] == 1) {
            BOXES[i].innerHTML = "<p>X</p>";
            x.push(i);
            x.sort();
        }
        if (turn == false && opened[i] == 1) {
            BOXES[i].innerHTML = "<p>O</p>";
            o.push(i);
            o.sort();
        }
        opened[i] = 0;
        turn = !turn
    })
} 

我将粘贴每个x坐标到数组"x“(x.pushi),并将o坐标粘贴到"o”数组(o.pushi),但我不知道如何在数组中搜索同样不同的数字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-11 17:07:52

您可以创建两个函数,一个用于生成“差异”数组,另一个用于检查所有这些数字是否都是相同的。见下面的代码:

代码语言:javascript
运行
复制
const array = [1, 4, 7];

// Function to get differences
function getDiffs(array) {
  let diffs = [];
  for(let i=0; i<array.length; i++) {
    if(i > 0) {
      diffs.push(array[i] - array[i-1]);
    }
  }
  return diffs;
}

// Function to compare those numbers to see if they are the same
function checkSameValue(diffs) {
  let item = diffs[0];
  for(let i=0; i< diffs.length; i++) {
    if(diffs[i] !== item) {
      return false;
    }
  }
  return true;
}

希望这能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2019-01-11 16:47:15

像这样的东西会管用的。

代码语言:javascript
运行
复制
function didWin(arr) {
    let len = arr.length; // I like checking length once because it's O(n). Probably won't matter for your game, though.
    if (len < 3)
      return false; // No win if less than 3 moves
    var firstDiff = arr[1] - arr[0];
    for (var i = 1; i < len - 1; ++i) { // We don't check the first (already done) or the last (no arr[len] element)
        if (arr[i+1] - arr[i] != firstDiff)
            return false; // We know we are done as soon as the difference is not equal
    }
    return true; // We have now checked that all differences are equal
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54150546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档