尝试以下无损(快速)功能: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;}
仅两行:// Shuffle arrayconst shuffled = array.sort(() => 0.5 - Math.random());// Get sub-array of first n elements after shuffledlet selected = shuffled.slice(0, n);