我有十二个正方形,其中六个是随机选择的,然后应用一种样式。这是通过从一组唯一值生成随机值来实现的。问题是生成的随机值不是唯一的,例如 5 可以被多次选择。我在这里看过很多帖子,似乎有很多不同的方法可以实现这一目标 - 洗牌等。哪种方法最有效?
for (var i = 0; i < 6 ; i++)
(function (i) {
setTimeout(function () {
var rand = arr[Math.floor(Math.random() * arr.length)];
var square = document.getElementById('square' + rand);
square.style.background = black;
if (i == 6) Reset();
}, 1500 * i);
})(i);
};
最佳答案
为了简单起见,我假设您的元素有一个类。
所以,我会抓取所有元素:
var elements = document.getElementsByClassName("square");
然后我将创建一个包含 ID 的数组
var ids = [];
for (var i = 0; i < elements.length; ++i)
{
ids.push(elements[i].getAttribute("id"));
}
然后根据数组的长度生成随机数
var random = roundingFunction(Math.random() * ids.length);
然后检索索引处的元素并从数组中删除
var elementID = ids.splice(random, 1);
然后重复。
关于javascript - 来自唯一值数组的唯一随机值 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292750/