如何从数组中获取许多随机元素?
2022-08-30 02:06:19
我正在研究“如何从javascript中的数组中随机访问元素”。我发现了许多关于此的链接。喜欢:从JavaScript数组中获取随机项目
var item = items[Math.floor(Math.random()*items.length)];
但在这里,我们只能从数组中选择一个项目。如果我们想要一个以上的元素,那么我们如何实现这一目标呢?我们如何从数组中获取多个元素?
我正在研究“如何从javascript中的数组中随机访问元素”。我发现了许多关于此的链接。喜欢:从JavaScript数组中获取随机项目
var item = items[Math.floor(Math.random()*items.length)];
但在这里,我们只能从数组中选择一个项目。如果我们想要一个以上的元素,那么我们如何实现这一目标呢?我们如何从数组中获取多个元素?
只需两行:
// Shuffle array
const shuffled = array.sort(() => 0.5 - Math.random());
// Get sub-array of first n elements after shuffled
let selected = shuffled.slice(0, n);
试试这个非破坏性(和快速)功能:
function getRandom(arr, n) {
var result = new Array(n),
len = arr.length,
taken = new Array(len);
if (n > len)
throw new RangeError("getRandom: more elements taken than available");
while (n--) {
var x = Math.floor(Math.random() * len);
result[n] = arr[x in taken ? taken[x] : x];
taken[x] = --len in taken ? taken[len] : len;
}
return result;
}