javascript - 没有重复数字的随机生成器

标签 javascript html arrays

我有一个数组,需要保存 6 个随机生成的数字。我为实现无重复所做的工作是使用以下代码。我认为这可以通过在重复项中添加 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] + '" />';

}

最佳答案

您可以使用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.

关于javascript - 没有重复数字的随机生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26481488/

相关文章:

javascript - 即使页面关闭/刷新后也存储按钮属性

php - 为网格布局拆分 PHP 数组

javascript - 如何在javascript中根据索引组合数组?

jQuery:识别声明变量的值与数组中键列表中的值相同

javascript - 使用js在选择时获取所选项目

javascript - 部分字符串以粗体显示

javascript - 如何使我的网页加载速度更快?

JavaScript 正则表达式模式 - 困惑

html - 需要帮助解决未知问题?

html - 当 Div 展开时我的屏幕没有激活滚动条