【发布时间】:2018-11-06 15:03:49
【问题描述】:
我有这个 JS 代码,其中包括(当前)4 个图像的数组和一个选择随机图像的函数:
const scenes = ['url(scenes/scene1.jpg)', 'url(scenes/scene2.jpg)', 'url(scenes/scene3.jpg)', 'url(scenes/scene1.jpg)'];
function randomScene() {
const shuffle = Math.floor(Math.random() * (scenes.length));
document.getElementById('bg-switch').style.backgroundImage = scenes[shuffle];
};
然后我有一个 HTML 按钮 - 如果单击它,它会执行“randomScene()”,并显示来自名为“scenes”的数组中的图像。
<section id="bg-switch">
<div class="container text-center">
<a><button type="button" onclick="randomScene()">Click!</button></a>
</div>
</section>
问题:我想避免在单击按钮时连续显示同一图像两次。
- 我想从数组中删除已显示的图像。
- 我想重置(随机播放?)数组,一旦从数组中删除所有元素,因此单击按钮会继续显示图像。
【问题讨论】:
-
最简单的方法可能是sort the array randomly,然后按顺序逐步完成。
-
我会按照 Daniel 建议的方式进行。打乱数组,然后您可以遍历它,而不必再担心重复或随机化或清理。
标签: javascript arrays random