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

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


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

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


qq_遁去的一_1
浏览 1070回答 3
3回答

弑天下

尝试以下无损(快速)功能: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;}

慕勒3428872

仅两行:// Shuffle arrayconst shuffled = array.sort(() => 0.5 - Math.random());// Get sub-array of first n elements after shuffledlet selected = shuffled.slice(0, n);

哆啦的时光机

创建一个可以做到这一点的功能:var getMeRandomElements = function(sourceArray, neededElements) {&nbsp; &nbsp; var result = [];&nbsp; &nbsp; for (var i = 0; i < neededElements; i++) {&nbsp; &nbsp; &nbsp; &nbsp; result.push(sourceArray[Math.floor(Math.random()*sourceArray.length)]);&nbsp; &nbsp; }&nbsp; &nbsp; return result;}您还应该检查sourceArray是否有足够的元素要返回。如果要返回唯一元素,则应从sourceArray中删除选定的元素。
打开App,查看更多内容
随时随地看视频慕课网APP