如何正确创建JQuery inArray if语句?

时间:2013-07-08 06:38:48

标签: javascript jquery arrays

我正在生成一个随机数列表。每个随机数都会添加到一个数组中,但我想检查是否输入了两次相同的数字。我在尝试使用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语句永远不会触发。有人能指出我正确的方向吗?

2 个答案:

答案 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);
    } 
} 

http://jsfiddle.net/zzL7v/