我正在编写几个javascript函数来帮助从JSON提要中随机选择文章。
第二个函数loadStories循环遍历需要检索的文章数量,并调用getRandomNumberFromRange函数获取数字。这个数字最终将用作从JSON提要数组中选择文章的键。
为了确保随机数不会被多次拾取,我创建了一个数组来存储以前拾取的数字,在拾取数字时,我将对其进行检查。如果数字已经在数组中,则拾取另一个数字,如果不是,则将其添加到数组中。
这
Codepen
var setupEmployeeStories = function () {
var
$element = $(".related-employee-stories"),
noOfStories = parseInt($element.attr("data-stories")),
arrSelectedNumbers = [],
getRandomNumberFromRange = function(min, max) {
var randomNumber = Math.floor(Math.random() * (max - min) + min);
if(arrSelectedNumbers.indexOf(randomNumber) === -1){
arrSelectedNumbers.push(randomNumber);
}else{
getRandomNumberFromRange(min, max);
}
return randomNumber;
},
loadStories = function(){
for(var i = 0; i < noOfStories; i++){
var rand = getRandomNumberFromRange(0, 4);
console.log(rand);
}
console.log(arrSelectedNumbers);
};
loadStories();
};
setupEmployeeStories();
不幸的是,当函数多次选择相同的随机数时,我从函数中得到了一些奇怪的结果。出于某种原因,getRandomNumberFromRange返回的数字往往与函数实际拾取的数字完全不同。这可以从(控制台)记录的结果和最终阵列arrSelectedNumbers中的差异看出