Javascript function to determine if array element already exists
本问题已经有最佳答案,请猛点这里访问。
所以我写了一些代码,这些代码将生成10次介于1到20之间的随机数,将其添加到数组中,然后将其显示在表中。如果一个数字出现多次,它将在表中显示红色。我在创建一个函数时遇到了问题,这个函数将评估随机数,以确定它是否是随机的,并将其变为红色。任何帮助都非常感谢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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 //} |
以下是如何测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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>"); |
编辑:如果您正在寻找一个实用的解决方案,请按照注释中的建议使用
将数字存储为对象中的键。
1 2 3 4 5 6 7 8 9 10 11 | 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"); } |