Javascript,比较数组中的元素,如果为 true 则执行函数

标签 javascript loops for-loop

我正在努力让这件事继续下去 - 这基本上是一个非常简单的游戏,你必须猜测哪个运行者将首先冲过终点线。

visual 基本上,它是一条有 4 名运行者的赛道。 search 按钮给出数组中的随机数。这个数字显示了哪个运行者向终点线前进了一步。

我把这个东西分成两部分。首先,我制作了随机数生成器,其他部分只是轨道。我可以用 4 个按钮让运行者单独移动。现在我不知道如何进行这项工作。

我尝试了不同的代码,但仍然没有任何效果。我是 JavaScript 新手,有一点 PHP 知识,我认为 PHP 的工作方式并不是我能够完成这项工作的方式。

我尝试了不同的方法来比较随机数生成器的结果,我认为这是我得到的最接近的结果,并且我缺少一点我无法弄清楚的代码。

谢谢。

var runner = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
];

function GetValue() {
  var random = runner[Math.floor(Math.random() * runner.length)];
  //alert(random);
  document.getElementById("message").innerHTML = random;
  for (var i = runner.length - 1; i >= 0; i--) {
    if (runner[i] === random) {
      runner.splice(i, 1);
      break;
    }
  }

  document.getElementById("demo1").innerHTML = runner;
}

var imgObjgroen = null;
var imgObjrood = null;
var imgObjgeel = null;
var imgObjblauw = null;

function init() {
  imgObjblauw = document.getElementsByClassName('loperblauw');
  imgObjblauw.style.left = '35px';
  imgObjgeel = document.getElementsByClassName('lopergeel');
  imgObjgeel.style.left = '35px';
  imgObjrood = document.getElementsByClassName('loperrood');
  imgObjrood.style.left = '35px';
  imgObjgroen = document.getElementsByClassName('lopergroen');
  imgObjgroen.style.left = '35px';
}

if (random === 1) {
  imgObjgroen.style.left = parseInt(imgObjgroen.style.left) + 95 + 'px';
}

if (random === 2) {
  imgObjrood.style.left = parseInt(imgObjrood.style.left) + 95 + 'px';
}

if (random === 3) {
  imgObjgeel.style.left = parseInt(imgObjgeel.style.left) + 95 + 'px';
}

if (random === 4) {
  imgObjblauw.style.left = parseInt(imgObjblauw.style.left) + 95 + 'px';
}

window.onload = init;
<div id="wrap">
  <img id="baan" src="baan.png">
  <img id="lopergroen" src="lopergroen.png">
  <img id="loperrood" src="loperrood.png">
  <img id="lopergeel" src="lopergeel.png">
  <img id="loperblauw" src="loperblauw.png">
</div>

<input type="button" id="btnSearch" value="Search" onclick="GetValue();" />

<p id="message" class="test">test</p>



<p id="demo1"></p>

最佳答案

您的代码并不是真正的高性能,因为您需要循环并测试所有数组元素,我认为您正在寻找的是 Javascript array.filter() 。它将完美地实现您想要做的测试并过滤结果。

你的代码是:

var random = runner[Math.floor(Math.random() * runner.length)];

document.getElementById("message").innerHTML = random;

var filtered = [12, 5, 8, 130, 44].filter(function(value){
          return value === random;
);

关于Javascript,比较数组中的元素,如果为 true 则执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39855246/

相关文章:

javascript - ChartJS2 ReactJS 中相同类型的多个图表 - 错误工具提示

javascript - 如何在所有 Ajax 调用完成后停止 setInterval?

在循环中比较 char 和 int

python - 索引错误 : index 1 is out of bounds for axis 0 with size 1 (Python, NumPy)

java - 何时使用 for (int i =0; ; )/for-each/iterator 遍历列表

java - 莫尔斯电码翻译器 - 似乎无法准确地从莫尔斯电码转换为英语

javascript - 是否可以使用 html css 和 jquery 创建具有多列的下拉菜单(如大型菜单)而不使用任何插件?

php - 在php中将双反斜杠添加到单反斜杠

冒泡排序算法中的 Ruby 无限循环

r - 使用 R,一次循环两个文件