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

Javascript,比较数组中的元素,如果为true,则执行函数,javascript,loops,for-loop,Javascript,Loops,For Loop,我正试图让这件事继续下去-这基本上是一个非常简单的游戏,你必须猜测哪个跑步者将首先越过线 基本上,这是一条有4名跑步者的赛道。 search按钮从数组中给出一个随机数。这个数字显示了哪一位运动员向终点线前进了一步 我把它分成两部分。首先,我制作了随机数发生器,另一部分就是轨道。我能用4个按钮让跑步者分开移动。现在我不知道该怎么做 我尝试了不同的代码,但仍然没有任何效果。我是JavaScript新手,有一点PHP知识,我认为PHP的工作方式并不是我能做到这一点的方式 我尝试了不同的方法来比较随机

我正试图让这件事继续下去-这基本上是一个非常简单的游戏,你必须猜测哪个跑步者将首先越过线

基本上,这是一条有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,
];
函数GetValue(){
var random=runner[Math.floor(Math.random()*runner.length)];
//警报(随机);
document.getElementById(“message”).innerHTML=random;
对于(var i=runner.length-1;i>=0;i--){
如果(运行程序[i]==随机){
接头(i,1);
打破
}
}
document.getElementById(“demo1”).innerHTML=runner;
}
var imgObjgroen=null;
var imgObjrood=null;
var imgObjgeel=null;
var imgObjblauw=null;
函数init(){
imgObjblauw=document.getElementsByClassName('loperblauw');
imgObjblauw.style.left='35px';
imgObjgeel=document.getElementsByClassName('lopergel');
imgObjgeel.style.left='35px';
imgObjrood=document.getElementsByClassName('loperrood');
imgObjrood.style.left='35px';
imgObjgroen=document.getElementsByClassName('lopergroen');
imgObjgroen.style.left='35px';
}
如果(随机===1){
imgObjgroen.style.left=parseInt(imgObjgroen.style.left)+95+'px';
}
如果(随机===2){
imgObjrood.style.left=parseInt(imgObjrood.style.left)+95+'px';
}
如果(随机===3){
imgObjgeel.style.left=parseInt(imgObjgeel.style.left)+95+'px';
}
如果(随机===4){
imgObjblauw.style.left=parseInt(imgObjblauw.style.left)+95+'px';
}
window.onload=init

测试


我发现您缺少一件事:

Math.floor(Math.random() * 4)
应该是

Math.floor(Math.random() * 4) + 1

因为现在你只能得到0-3,而不是1-4。所以你可以改变这个或者你的if-else条件。您可以在控制台中对此进行测试。

四个
if
语句(
if(random==1)
等)共同构成了您的(当前不存在的)
move
功能。将它们包装在函数中,并在
GetValue
末尾调用它:

函数移动播放器(playerIndex){
如果(playerIndex==1){
imgObjgroen.style.left=parseInt(imgObjgroen.style.left)+95+'px';
}
如果(playerIndex==2){
imgObjrood.style.left=parseInt(imgObjrood.style.left)+95+'px';
}
如果(playerIndex==3){
imgObjgeel.style.left=parseInt(imgObjgeel.style.left)+95+'px';
}
如果(playerIndex==4){
imgObjblauw.style.left=parseInt(imgObjblauw.style.left)+95+'px';
}
}
函数getValue(){
/*你的代码*/
移动播放器(随机);

}
您的代码没有真正的性能,因为您需要循环和测试所有数组元素,我认为您需要的是。它将完美地完成您尝试进行的测试并过滤结果

您的代码是:

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;
);

为什么不为每个跑步者使用一个计数器呢。在随机选择之后,你可以增加位置并检查实际的跑步者是否完成。游戏不是这样的,它必须是一个数组,看我没有提到它,但它实际上是一副牌。其中1是钻石,2是黑桃,依此类推。我想看到它的视觉效果,每一个生成的数字,都是一个步骤,所以它实际上看起来像一场比赛。对不起,英语不好,可能也是我没有完全理解你的答案的原因。运行你的代码片段=
未捕获的引用错误:未定义random
。我会先让你的代码片段工作起来,然后演示你的问题。jea但是我用循环中的变量做了-1,所以这没有什么区别,我试着稍微修改一下if语句,但对我来说不起作用。仍在尝试如何,顺便说一句,它不是4,而是数组中的值数。我还是很感激你能想到我的回应,我尝试了一下,让你知道它是如何为我工作的,我正在分析最后一行代码movePlayer(runner);必须是移动玩家(随机);但我仍然无法修复它,好像一旦我使用了一个变量,我就不能再使用它了。idkI包含了一个片段,展示了这个小小的改变应该如何让你更进一步。谢谢,我让它工作起来了,不是以这种方式,因为我认为我必须改变很多。但是谢谢你的时间谢谢,我知道我做错了什么。就像你说的,我必须循环所有元素。