在我的应用程序中,我使用来自 jqueryui 的 datepicker,它需要每个输入元素的唯一 ID。要做到这一点,
我使用此功能(示例):
var x = 100;
$("a").on("click", function(){
console.log(Math.floor(Math.random() * x ));
})
我的问题是,我如何保证没有随机数不会重复。所以,我可以避免重复的ID。
提前致谢..
在我的应用程序中,我使用来自 jqueryui 的 datepicker,它需要每个输入元素的唯一 ID。要做到这一点,
我使用此功能(示例):
var x = 100;
$("a").on("click", function(){
console.log(Math.floor(Math.random() * x ));
})
我的问题是,我如何保证没有随机数不会重复。所以,我可以避免重复的ID。
提前致谢..
使用随机设置自定义 ID 不是一个好主意。为什么不为每个元素创建一个数组并增加 ID 呢?
不要使用随机数,而是使用计数器。
var x = 100;
$("a").on("click", function(){
x++;
console.log("id" + x);
});
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);
});
您可能会得到一个已经使用的号码,因此如果有必要,您应该创建一个循环,该循环仅在创建新的未使用号码时完成
//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());
}