所以我写了一些代码,它会产生1到20次的随机数十次,将它添加到一个数组中,然后将它显示在一个表中。如果一个数字出现不止一次,它将在表格中显示红色。我无法创建评估随机数的函数,以确定它是否是随机的并将其变为红色。非常感谢任何帮助
var i;
var myarray = new Array();
document.writeln("<table>");
document.writeln("<th> Index </th>");
document.writeln("<th> Number </th>");
for (i = 1; i <= 10; i++){
//numberExists();
var min = 1;
var max = 20;
var randomnum = Math.floor(Math.random() * (max - min + 1)) + min;
var mynum = parseInt (randomnum );
myarray[i] = mynum;
document.writeln("<tr>");
document.writeln("<td>" + i + "</td>");
document.writeln("<td>" + myarray[i] + "</td>");
document.writeln("</tr>");
}
document.writeln("</table>");
//function numberExists(mynum, myarray){
// Can't figure out the code that goes here
//}
答案 0 :(得分:1)
编辑:如果您正在寻找实用的解决方案,请按照评论中的建议使用indexOf
。如果你正在寻找合适的算法(这不需要线性查找时间并导致渐近更快的算法,请遵循我原来的建议:
将数字存储为对象中的键。
var myNumbers = {};
...
myNumbers[mynum] = true; // add it to the object
if (myNumbers[mynum]) {
console.log("The number has already been added");
} else {
console.log("This is a new number");
}
答案 1 :(得分:1)
以下是如何测试mynum
是否已在myarray
中并相应更改颜色的方法:
var i;
var myarray = new Array();
document.writeln("<table>");
document.writeln("<th> Index </th>");
document.writeln("<th> Number </th>");
for (i = 1; i <= 10; i++){
var min = 1;
var max = 20;
var randomnum = Math.floor(Math.random() * (max - min + 1)) + min;
var mynum = parseInt (randomnum );
var color="black";
if(myarray.indexOf(mynum) > -1){
color="red";
}
myarray[i] = mynum;
document.writeln("<tr>");
document.writeln("<td>" + i + "</td>");
document.writeln("<td><font color="+color+">" + myarray[i] + "</td>");
document.writeln("</tr>");
}
document.writeln("</table>");