一尘不染

如何从数组中随机获取n个元素

javascript

我正在研究“如何从javascript中的数组随机访问元素”。我发现了许多与此有关的链接。

var item = items[Math.floor(Math.random()*items.length)];

问题: 但是在这种情况下,我们只能从数组中选择一项,如果我们想要多个元素,那么我们将如何实现这一点,所以请仅从该语句中获取一个数组中的多个元素。


阅读 595

收藏
2020-05-01

共1个答案

一尘不染

尝试以下无损快速功能:

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;
}
2020-05-01