跳过主要内容

从一个数组中不断随机取出元素,直到数组为空……然后重新开始

从一个数组中一个接一个地随机取出值,直到所有值都被取完(就像当你取出其中一个后,它就不再可供再次取出,直到所有的项都被唯一地取出过一遍):

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];
}
无噪 Logo
无噪文档
中文文档 · 复刻官网
查看所有 ↗