javascript - 来自唯一值数组的唯一随机值 javascript

标签 javascript arrays random

我有十二个正方形,其中六个是随机选择的,然后应用一种样式。这是通过从一组唯一值生成随机值来实现的。问题是生成的随机值不是唯一的,例如 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);
   };

最佳答案

为了简单起见,我假设您的元素有一个类。

Example on 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);

然后重复。

关于javascript - 来自唯一值数组的唯一随机值 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292750/

相关文章:

c# - 随机化列表,同时确保重复项不连续

javascript - 使用 redux 和 React-router 进行深度链接的推荐方法

javascript - 当鼠标未悬停在元素上方时使用 onmouseout 运行?

javascript - 如何从组件外访问 react native 组件?

php - 多维 PHP 数组到 JSON 数组

arrays - Shell Bash - 将多行字符串拆分为数组

bash - 在 Bash 中随机均匀分布

Excel随机数生成器不产生重复项?

javascript - 将 `this.data` 的上下文转移到 Blaze/Meteor 中的其他模板?

jquery - 为什么 JQuery 将空数组传递给 MVC Controller ,而不是字符串数组?