如何在 1-10 之间生成 4 个随机数并宣布一个获胜者(Javascript)
How to generate 4 random numbers between 1-10 and have one declared a winner (Javascript)
我正在尝试创建一个随机数生成器。 到目前为止,我有
<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获胜"(获胜者是最高的轮子)
提前谢谢。
坚持
你的代码,我会:
计算循环中的最大值。
根据该最大值查找人员的索引,使用 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>
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- 如何在 1-10 之间生成 4 个随机数并宣布一个获胜者(Javascript)
- codeacademy是一个石头、剪子、布的游戏