如何在 1-10 之间生成 4 个随机数并宣布一个获胜者(Javascript)

How to generate 4 random numbers between 1-10 and have one declared a winner (Javascript)

本文关键字:布一个 获胜者 Javascript 随机数 1-10 之间      更新时间:2023-09-26

我正在尝试创建一个随机数生成器。 到目前为止,我有

<script>
   var arr = []
  while (arr.length < 4) {
    var randomnum = Math.ceil(Math.random() * 10)
    var found = false;
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] == randomnum) {
        found = true;
        break
      }
    }
    if (!found) arr[arr.length] = randomnum;
  }
  document.write(arr);     
</script>

但是,与其让数字显示在行中,我想让它说"人 a 卷 __,人 b 卷 __,等等",但我不知道如何通过 javascript 做到这一点。

另外,我将如何宣布获胜者,例如"人A获胜"(获胜者是最高的轮子)

提前谢谢。

坚持

你的代码,我会:

  1. 计算循环中的最大值。

  2. 根据该最大值查找人员的索引,使用 Array.indexOf()

.HTML

<p>Person A rolls <span id="pa"></span></p>
<p>Person B rolls <span id="pb"></span></p>
<p>Person C rolls <span id="pc"></span></p>
<p>Person D rolls <span id="pd"></span></p>
<p>Person <span id="winner"></span> wins!</p>

JavaScript

var x = document.getElementById("x");
var arr = [];
var max = 0; // <-- new code
  while (arr.length < 4) {
    var randomnum = Math.ceil(Math.random() * 10)
    var found = false;
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] == randomnum) {
        found = true;
        break
      }
    }
    if (!found) arr[arr.length] = randomnum;
    if (randomnum > max) max = randomnum;  // <-- new code
  }
// new code
 document.getElementById("pa").innerHTML = arr[0];
 document.getElementById("pb").innerHTML = arr[1];
document.getElementById("pc").innerHTML = arr[2];
 document.getElementById("pd").innerHTML = arr[3];
 var players = ["A", "B", "C", "D"];
 document.getElementById("winner").innerHTML = players[arr.indexOf(max)];

**演示**

这是一个JSFiddle。

  • Array.prototype.every()

    every() 方法测试数组中的所有元素是否都通过了提供的函数实现的测试。

  • Array.prototype.map()

    'map() 方法创建一个新数组,其中包含在此数组中的每个元素上调用提供的函数的结果。

  • Array.prototype.reduce()

    reduce() 方法对累加器和数组的每个值(从左到右)应用函数,以将其减少到单个值。

var arr = [],
    persons = ['A', 'B', 'C', 'D'],
    maxIndex;
// set all random numbers
while (arr.length < 4) {
    var randomnum = Math.ceil(Math.random() * 10)
    arr.every(function (a) {
        return a !== randomnum;
    }) && arr.push(randomnum);
}
// write results for every person
document.write(arr.map(function (a, i) {
    return 'Person ' + persons[i] + ' rolls ' + a + '.';
}).join('<br>'));
// get the max index
maxIndex = arr.reduce(function (r, a, i, aa) {
    return a > aa[r] ? i : r;
}, 0);
document.write('<p>Winner is person ' + persons[maxIndex] + ' with ' + arr[maxIndex] + '.</p>');

var list_numbers = []
for(i = 0; i < 4; i++){
  var randomnum=Math.ceil(Math.random()*10)
  $("#numbers").append("<li>Your number is "+randomnum+"</li>")
  list_numbers.push(randomnum)
}
//this is the most important bit, using apply to get the biggest number in an array
$("#numbers").append("<p>Highest number is "+Math.max.apply(Math, list_numbers)+"</p>")
<!--jquery just to output in html -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<ul id="numbers"></ul>
<div id="highest_number"></div>