我想在我的页面上显示四个随机图像,因此首先我要从初始图像阵列创建一个随机图像:
function randomFlag() {
var randomFlag = Math.floor(Math.random() * flags.length);
return flags[randomFlag];
}
然后我将四个随机图像推入一个新阵列:
function generateRandomFlag(num) {
var arr = [];
for (var i = 0; i < num; i++) {
arr.push(randomFlag());
}
return arr;
}
我遇到的问题是,有时我会将相同的图像两次推入数组,最终显示两个或更多相同的图像而不是四个随机图像。
如何创建首先检查图像中是否已存在图像的功能,只有在图像中不存在图像时才推送它?
感谢。
答案 0 :(得分:2)
替代方法是使用随机洗牌的所有标志
for tt in range(len(service_areas)):
plt.plot([columnstart, columnend], [tot_hrs, tot_hrs], color='#228B22', linestyle='-', linewidth=2)
columnstart +=1
columnend +=1
在ES2015 +它更简洁
function generateRandomFlag(num) {
return flags
.slice() // copy the flags array because .sort mutates the source array
.sort(function() { return Math.random() - 0.5; }) // shuffle the copied array
.slice(-num); // get the LAST "num" values of the shuffled array
}
答案 1 :(得分:0)
您可以重构generateRandomFlag
或randomFlag
。在我的情况下,我将重构generateRandomFlag
。
function generateRandomFlag(num) {
var arr = [];
var reachNum = false;
var ctr=0;
while (!reachNum) {
var flag = randomFlag();
if (arr.indexOf(flag)==-1)
{
arr.push(flag);
ctr++;
}
if (ctr==num)
reachNum = true;
}
return arr;
}