0

在我的应用程序中,我使用来自 jqueryui 的 datepicker,它需要每个输入元素的唯一 ID。要做到这一点,

我使用此功能(示例):

   var x = 100;

    $("a").on("click", function(){
        console.log(Math.floor(Math.random() * x ));
    })

我的问题是,我如何保证没有随机数不会重复。所以,我可以避免重复的ID。

提前致谢..

4

4 回答 4

1

使用随机设置自定义 ID 不是一个好主意。为什么不为每个元素创建一个数组并增加 ID 呢?

于 2013-06-04T09:06:59.573 回答
1

不要使用随机数,而是使用计数器。

var x = 100;

$("a").on("click", function(){
  x++;
  console.log("id" + x);
});
于 2013-06-04T09:07:27.150 回答
1
var x = 100,
    usedNumbers = [];

$("a").on("click", function(){
    var number = Math.floor(Math.random() * x );

    if ($.inArray(number, usedNumbers)) {
        number = Math.floor(Math.random() * x );
    }
    else {
        usedNumbers.push(number);
    }

    console.log(number);
    console.log(usedNumbers);
});

您可能会得到一个已经使用的号码,因此如果有必要,您应该创建一个循环,该循环仅在创建新的未使用号码时完成

于 2013-06-04T09:08:47.780 回答
1
//Object capable of generating random ids through recursion triggered by filtering result

    var uniqueRandom = {
        randoms: [],
        getRandom: function(){
            var random = Math.floor(Math.random() * 10); //Make this your size, I used 10 for easy testing
            if(this.randoms.filter(function(elem){ return elem == random}).length > 0){
               return this.getRandom();
            }else{
               this.randoms.push(random);
               return random;
            }
        }
    }

//Usage
    for(var i = 0; i < 10; i++){
       console.log(uniqueRandom.getRandom());
    }

工作示例 http://jsfiddle.net/q6SRs/1/

于 2013-06-04T09:24:50.100 回答