我有一个数组需要保存6个随机生成的数字。我使用以下代码完成了 no duplicatelicates 所做的工作。我认为这可以通过在副本中添加1来起作用,但是它会再次出现在最后!
userInput = document.getElementById('txtGen').value;
var numbers = new Array(6);
var msg = '';
for(var i=0;i<numbers.length;i++)
{
numbers[i] = Math.random() * userInput;
numbers[i] = Math.floor(numbers[i]);
if(numbers[i] == numbers[i-1]){
numbers[i] = numbers[i++];
}
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
document.getElementById('numbers').innerHTML = msg;
我也尝过这个,但这也没有用!
for(var i=0;i<numbers.length;i++)
{
numbers[i] = Math.random() * userInput;
numbers[i] = Math.floor(numbers[i]);
for(var b=0;b<numbers.length;b++)
{
if(numbers[b] == numbers[b--]){
numbers[b] = numbers[b++];
}
}
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
答案 0 :(得分:1)
您可以使用indexOf
检查数字是否已在数组中。如果是,您可以生成一个新号码。
var userInput = document.getElementById('txtGen').value;
var numbers = new Array(6);
for (var i = 0; i < numbers.length; i++)
{
var temp = 0;
do
{
temp = Math.floor(Math.random() * userInput);
}
while (numbers.indexOf(temp) > -1)
numbers[i] = temp;
}
document.getElementById("numbers").innerHTML = numbers.join(); // <- Write numbers to div.
答案 1 :(得分:0)
userInput = document.getElementById('txtGen').value;
var numbers = new Array(6),tempNo=new Array(6);
var msg = '';
for(var i=0;i<numbers.length;i++)
{
tempNo[i] = Math.random() * userInput;
if(!numbers[tempNo[i]]){
numbers[Math.floor(tempNo[i])] = Math.floor(tempNo[i]);
msg += '<input id="num' + i + '"' + 'type="text" value="' + Math.floor(tempNo[i]) + '" />';
}
}
document.getElementById('numbers').innerHTML = msg;
尝试使用关联数组
答案 2 :(得分:0)
试试这个解决方案......
for(var i=0;i<numbers.length;i++)
{
numbers[i] = Math.random() * userInput;
numbers[i] = Math.floor(numbers[i]);
for(var b=1;b<numbers.length;b++)
{
if(numbers[b] == numbers[b--]){
numbers[b] = Math.random() * userInput;
numbers[b] = Math.floor(numbers[b]);
b=1;
}
}
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
答案 3 :(得分:0)
var output =document.getElementById('numbers'),
numbers = new Array(6),
msg = '';
for(var i=0;i<numbers.length;i++){
numbers[i] = randomNumber()
msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}
function randomNumber(max){
max = (max > 0) ? max : 100;
var a = 1 + max*(Math.random());
return Math.round(a);
}
output.innerHTML = msg;
&#13;
<div id="numbers"></div>
&#13;