我有十二个正方形,随机选择六个正方形,然后应用一种风格。这是通过从唯一值数组生成随机值来实现的。问题是生成的随机值不是唯一的,例如可以多次选择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);
};
答案 0 :(得分:2)
为了简单起见,我假设你的元素有一个类。
所以,我会抓住所有元素:
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);
重复一遍。
答案 1 :(得分:0)
基本上有三种不同的方法:
哪一个效率最高的问题无法在您的问题范围内得到解答。它们之间的差异非常小,考虑到浏览器之间的性能差异,它可以忽略不计。
如果你真的需要最高效的,你必须全部尝试并在各种浏览器中测试性能。
否则只需选择最容易实现的那个。这些都足以满足任何正常应用。