javascript唯一值数组中的唯一随机值
Unique random values from array of unique values javascript
我有十二个正方形,其中六个是随机选择的,然后应用一种样式。这是通过从唯一值的数组中生成随机值来实现的。问题是生成的随机值不是唯一的,例如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);
};
为了简单起见,我假设您的元素有一个类。
jsFiddle示例
所以,我会抓住所有元素:
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);
然后重复。
基本上有三种不同的方法:
- 随机选择一个项目,如果以前使用过,请重复
- 将所有项目放入一个数组中,随机选取并从数组中移除
- 将所有项目放在一个数组中并洗牌
哪一个最有效在你的问题范围内是无法回答的。它们之间的差异非常小,考虑到浏览器之间的性能差异,可以忽略不计。
如果你真的需要最高效的,你必须尝试所有这些,并在各种浏览器中测试性能。
否则,只需选择一个看起来最容易实现的。对于任何正常应用程序来说,都足够好。
相关文章:
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 使用当前日期生成随机id
- 使用onkeyup JS事件检查输入的值是否唯一
- 从a-z中随机选择一个字母
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- RequireJ无法随机加载脚本
- 单击按钮时显示随机字符串
- Lodash映射并返回唯一
- Ajax更新面板随机错误'PRM_MissingPanel'
- 生成随机唯一数据的时间太长,占用了100%的CPU
- 如何从字符串数组中获得8个随机唯一元素
- javascript唯一值数组中的唯一随机值
- jQuery:生成尚未使用的唯一随机颜色
- 使用Javascript生成唯一的随机字符串
- 从JavaScript中的字符串生成HASH(唯一随机)
- 确保随机数据是唯一的
- 随机生成上传图片的唯一id
- 为数据库生成唯一的随机alpha数字随机字符串
- Javascript每次都会生成随机的唯一数字
- 使用javascript生成唯一的随机字母数字