我正在尝试创建一个非重复的随机数字选择器,有人可以指出它出了什么问题吗?感谢
var resultArray = [];
function pickRandom(){
var min = parseInt(document.getElementById("min").value);
var max = parseInt(document.getElementById("max").value);
var result = Math.floor((Math.random() * max) + min);
resultArray.push(result);
for (var i = 0; i < resultArray.length; i++){
if(resultArray[i].includes(result))
{
pickRandom();
} else {
document.getElementById("result").value = result;
}
}
}
答案 0 :(得分:3)
将其更改为:
var resultArray = [];
function pickRandom(){
var min = parseInt(document.getElementById("min").value);
var max = parseInt(document.getElementById("max").value);
var result = Math.floor((Math.random() * max) + min);
if(resultArray.includes(result))
{
pickRandom();
} else {
resultArray.push(result);
document.getElementById("result").value = result;
}
}
您的代码存在两个问题:
1.首先将新元素推送到数组,然后检查它是否在数组中,因此它始终返回true。这会导致无限循环
2. includes方法被定义为检查数组中是否存在元素或字符串中是否存在字符。在您的代码中,您已遍历数组中的每个元素,然后使用包含方法。
答案 1 :(得分:1)
如果$(function(){ // You can also write $(document).ready(function({ // code}) like this
var headerHeight = $('.header').height() + 'px';
$('.container').css('margin-top', headerHeight);
})
的长度等于可能数字的数量并退出循环,则可以使用检查。
resultArray
function pickRandom() {
var min = +parseInt(document.getElementById("min").value),
max = +parseInt(document.getElementById("max").value),
result = Math.floor((Math.random() * (max - min + 1)) + min);
if (resultArray.length === max - min + 1) {
document.getElementById("result").value = 'no more available';
return;
}
if (resultArray.includes(result)) {
pickRandom();
} else {
resultArray.push(result);
document.getElementById("result").value = result;
}
}
var resultArray = [];