我正在生成一个随机数列表。每个随机数都会添加到一个数组中,但我想检查是否输入了两次相同的数字。我在尝试使用if语句时遇到了很多麻烦,并且不确定我做错了什么。
我创建了:
//INITIALISE VARS, ARRAYS
var uniquearr = [];
i = 0;
while (i < 30){
var min = 0;
var max = 29;
var random = Math.floor(Math.random() * (max - min + 1)) + min;
//SEARCH UNIQUE ARRAY FOR EXISTING
if (jQuery.inArray(random, uniquearr) > -1){
//ADD NUMBER TO UNIQUE ARRAY
uniquearr.push(random);
//*DO SOMETHING*
} //END IF
i++;
} //END WHILE
但if语句永远不会触发。有人能指出我正确的方向吗?
答案 0 :(得分:3)
您需要测试数组中是否存在不的随机数;只有这样它才能被添加到数组中。
逻辑的另一个问题是,当i
变量在if
条件之外递增时,您不会总是添加30个唯一数字。在这里,您不必使用不同的循环变量,因为您可以检查目标阵列是否具有所需的大小
//INITIALISE VARS, ARRAYS
var uniquearr = [], min = 0, max = 29;
//SEARCH UNIQUE ARRAY FOR EXISTING
while (uniquearr.length < 30){
var random = Math.floor(Math.random() * (max - min + 1)) + min;
if (jQuery.inArray(random, uniquearr) == -1){
uniquearr.push(random);
}//END IF
}//END WHILE
console.log('uniquearr', uniquearr)
答案 1 :(得分:2)
那是因为您的if
语句始终为false
,您的数组为空,结果$.inArray
始终返回-1
,您应该检查是否返回值是-1还是不。
while (uniquearr.length < 30) { // uniquearr.length !== 30
var min = 0,
max = 29,
random = Math.floor(Math.random() * (max - min + 1)) + min;
//SEARCH UNIQUE ARRAY FOR EXISTENCE
if (jQuery.inArray(random, uniquearr) === -1) {
//ADD NUMBER TO UNIQUE ARRAY
uniquearr.push(random);
}
}