我正在生成具有随机数据属性的元素,如下所示:
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/