Javascript 如何使数组中的值一旦被使用,就可以';在阵列完成之前,是否不能再次使用?
在一个网站上,我希望当有人点击按钮时会出现一张随机图片。图片的URL包含在数组中的javascript文件中。到目前为止,它工作正常,但是我想让它一旦显示一张图片,它就不能再次显示,直到数组中的所有其他项都显示出来。换句话说,在阵列中的所有图片完成之前,我不希望任何图片显示两次。我应该在下面的代码中添加什么Javascript 如何使数组中的值一旦被使用,就可以';在阵列完成之前,是否不能再次使用?,javascript,arrays,random,Javascript,Arrays,Random,在一个网站上,我希望当有人点击按钮时会出现一张随机图片。图片的URL包含在数组中的javascript文件中。到目前为止,它工作正常,但是我想让它一旦显示一张图片,它就不能再次显示,直到数组中的所有其他项都显示出来。换句话说,在阵列中的所有图片完成之前,我不希望任何图片显示两次。我应该在下面的代码中添加什么 var images = ["sample1.png", "sample2.png", "sample3.png", "sample4.png", "sample5.png",
var images =
["sample1.png",
"sample2.png",
"sample3.png",
"sample4.png",
"sample5.png",
"sample6.png",
"sample7.png"];
var rand = images[Math.round(Math.random() * (images.length - 1))];
function test(){
rand = images[Math.round(Math.random() * (images.length - 1))];
document.getElementById("picture").style.background = "url('/images/"+rand+"') no-repeat center center";
}
你可以这样使用它 跟踪哪些可能性仍然存在,并在没有新可能性时重置 在本例中,我使用了字符串数组,但原理相同:) jsfiddle: 你可以做点什么 基本上,保留一个可用图像的运行列表,并在使用完所有图像后将其重置
var defaultImages = ["sample1.png", "sample2.png", "sample3.png", "sample4.png", "sample5.png", "sample6.png", "sample7.png"],
availImages = [],
randomImage = '',
button = document.getElementById('testButton');
button.onclick = test;
function test()
{
if(availImages.length == 0)
availImages = defaultImages.slice(0);
randomImage = availImages[Math.floor(Math.random() * availImages.length)];
var index = 0;
for(indexLength = availImages.length; index < indexLength; index++)
{
if(availImages[index] == randomImage)
break;
}
availImages.splice(index, 1)
console.log(randomImage);
}
var defaultImages=[“sample1.png”、“sample2.png”、“sample3.png”、“sample4.png”、“sample5.png”、“sample6.png”、“sample7.png”],
可用性=[],
随机图像=“”,
button=document.getElementById('testButton');
button.onclick=测试;
功能测试()
{
if(availImages.length==0)
availImages=defaultImages.slice(0);
randomImage=availImages[Math.floor(Math.random()*availImages.length)];
var指数=0;
对于(indexLength=availImages.length;索引
洗牌数组,然后遍历它。创建另一个数组,在计算图像索引时,将相应数组中的布尔值设置为true
。您可以针对每个索引与此数组进行比较。
var defaultImages = ["sample1.png", "sample2.png", "sample3.png", "sample4.png", "sample5.png", "sample6.png", "sample7.png"],
availImages = [],
randomImage = '',
button = document.getElementById('testButton');
button.onclick = test;
function test()
{
if(availImages.length == 0)
availImages = defaultImages.slice(0);
randomImage = availImages[Math.floor(Math.random() * availImages.length)];
var index = 0;
for(indexLength = availImages.length; index < indexLength; index++)
{
if(availImages[index] == randomImage)
break;
}
availImages.splice(index, 1)
console.log(randomImage);
}