javascript - 如何才能使数组中的值一旦被使用,就不能再次使用,直到数组完成为止?

标签 javascript arrays random

在网站上,我希望当有人单击按钮时显示一张随机图片。图片的 URL 包含在 JavaScript 文件中的数组中。到目前为止它工作正常,但是我想让它一旦出现图片,它就无法再次显示,直到数组中的所有其他项目都出现为止。换句话说,我不希望任何图片出现两次,直到数组中的所有图片都完成为止。我应该在下面的代码中添加什么?

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:http://jsfiddle.net/D3XSY/

var messages = ['hello', 'there', 'this', 'is', 'a', 'test'];
var available = [].concat(messages);
var interval;

function update(id) {
    if (available.length === 0) {
        available = [].concat(messages);
    }
    var ri = Math.floor(Math.random() * available.length);
    var msg = available[ri], el = document.getElementById(id);
    if (el) {
        el.innerHTML = msg;
    }
    available.splice(ri, 1);
}

interval = setInterval(update.bind(null, 'promo'), 500);

关于javascript - 如何才能使数组中的值一旦被使用,就不能再次使用,直到数组完成为止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127566/

相关文章:

javascript - 使用 jQuery 查找最近的 HTML 片段标识符以滚动位置

javascript - 如何通过 javascript 禁用 LiveAddress

c - 字符串中的指针和字符数组

c - 如何处理 C 中未使用的数组空间

algorithm - 播放随机歌曲算法

python - 从列表中随机选择 50 个项目

C++随机数生成器明显故障: am I unlucky?

javascript - 将单选按钮值传递给 sql 查询

javascript - 我如何告诉小部件最大化以填充整个可用空间?

java - 使用 gson 解析 JSON 数组