我目前正在使用 javascript 做一些实验,虽然我对 JS 并不陌生,但我怀疑我希望 SO 的好人能够提供帮助。
基本上我正在向一个 web 服务发出一个 jsonp 请求,该请求返回我回复的数量/长度(只是计算对象)。然后我随机选择其中的 9 个对象放在一个数组中,这就是问题所在。我想确保这 9 个对象都不会重复。为此,我使用以下代码:
function randomizer() {
return Math.ceil(Math.random()*badges.length);
}
function dupsVerify(array, number) {
array.forEach(function () {
if(array === number) {
return true;
}
});
return false;
}
// Randomly choose 9 array indexes
var randomBadge = function () {
var selectedIndexes = new Array();
while(selectedIndexes.length < 9) {
var found = false;
var randomNumber = randomizer();
if(!dupsVerify(selectedIndexes, randomNumber)) {
selectedIndexes.push(randomNumber);
} else {
newRandom = randomizer();
dupsVerify(selectedIndexes, newRandom);
}
}
return selectedIndexes;
}
我尝试了几种不同的方法来进行此验证,但我一直在考虑是否无法执行以下操作:
生成随机数并遍历数组以验证它是否已经存在于数组中。如果存在,则生成另一个随机数(随机调用)并再次验证。如果它不存在于数组中,则将其推送到“最终”数组。
我怎样才能做到这一点?使用回调?我这样做是对的还是应该碰运气的代码?有没有更简单的方法来做到这一点?
最好的祝福,