从一个数组中不断随机取出元素,直到数组为空……然后重新开始
从一个数组中一个接一个地随机取出值,直到所有值都被取完(就像当你取出其中一个后,它就不再可供再次取出,直到所有的项都被唯一地取出过一遍):
function pluckRandomFrom(array) {
return (
array.eligible && array.eligible.length
? array.eligible
: (array.eligible = gsap.utils.shuffle(array.slice(0)))
).pop();
}
你所需要做的就是每次传入数组,剩下的跟踪操作它会自动为你完成!
另外,如果你只是想从一个数组中随机取出一个元素,并且确保不是上一次取出的那个(因此不是清空数组,而是在每次随机取出时保证连续两次不会取出同一个元素),可以使用下面这个方法:
function getRandomFrom(array) {
var selected = array.selected;
while (
selected === (array.selected = Math.floor(Math.random() * array.length))
) {}
return array[array.selected];
}