javascript - 进一步生成 'one by one' 的随机元素生成集

标签 javascript jquery algorithm

我正在生成具有随机数据属性的元素,如下所示:

generateCards : function(n)
        {
            var actions = ['press', 'blue-right', 'blue-left', 'red-right', 'red-left'],
                i = n,
                ran,
                actions_cpy = actions.slice();

            for (; i--;) {
                ran = (Math.random() * actions_cpy.length)|0;
                $('#container-game-mobile').prepend(
                   $('<div>', {
                     // remove and return a random string from the array
                     'class': 'game-card-mobile',
                     'data-action': actions_cpy.splice(ran, 1)[0]
                   })
                );
                // load the array backup with values when it is empty
                if (actions_cpy.length === 0) {
                    actions_cpy = actions.slice();
                }
            }
        }

函数的工作方式是,来自 actions 数组的每个数据属性的数量或多或少相等。我最初生成 10 个元素,因此 n = 10 由于应用程序的性质,每次在 .game-card-mobile 上执行操作时我都会销毁它并需要生成新的,调用上面的函数,但现在使用 n = 1 。这里的问题是,我不知何故需要调用仍然不同的元素,所以要防止“blue-right”一遍又一遍地出现。

最佳答案

这有点令人困惑,但我想我明白了。

你需要一个函数来获取你的 Action ,该函数将返回这个数组的一个随机数,给这个函数,传递一个param你最后一个随机的 Action ,如果您的随机数与上次随机数相同,再次调用相同的函数,它将避免您的问题。

关于javascript - 进一步生成 'one by one' 的随机元素生成集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29682736/

相关文章:

Javascript、原型(prototype)对象、jQuery 和计时器

c++ - 如果我想在执行过程中将其内存减少一半,我可以使用哪种数据结构

algorithm - 三叉树与哈希表

javascript - 如何在 cordova/ionic 应用程序中放置 Google Plus +1 按钮?

javascript - ie9 的 CSS 选择下拉菜单问题

javascript - 使用 jQuery 读取 JSON 数组

java - 查找列表中的频率差异元素

javascript - 如何将事件监听器添加到 Canvas 中的图像?

JavaScript 数组 JSON.parse(字符串)

javascript - 更改图像标签列表的图像源并将其替换为特定列表