在我的应用程序中,我使用jqueryui中的datepicker,它需要每个输入元素的唯一id。要做到这一点,
我使用这个功能(例子):
var x = 100;
$("a").on("click", function(){
console.log(Math.floor(Math.random() * x ));
})
我的问题是,我怎么保证,没有随机数不会重复。所以,我可以避免重复的ID。
提前致谢..
答案 0 :(得分:1)
使用随机设置自定义ID不是一个好主意。 为什么不为每个元素创建一个数组并增加ID?
答案 1 :(得分:1)
请勿使用随机数,而是使用计数器。
var x = 100;
$("a").on("click", function(){
x++;
console.log("id" + x);
});
答案 2 :(得分: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);
});
可能会发生这样的事情,你确实得到了一个已经采用的数字,所以如果有必要,你应该创建一个循环,只有在创建一个新的未被识别的数字后才会完成
答案 3 :(得分: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());
}