本文介绍如何使用 JavaScript 从指定数组中随机取出 N 个不重复的数据。核心思路是创建临时数组副本,通过 Math.random 生成随机索引,利用 splice 方法移除已选元素并保存结果,同时处理数组长度不足的情况,确保程序健壮性。
JavaScript 随机抽取数组元素实现
具体实现代码如下所示:
<script language="javascript">
// 定义函数:从给定数组 arr 中随机返回 num 个不重复的项
function getArrayItems(arr, num) {
// 初始化一个临时数组,将传入的原始数组内容复制至此
var temp_array = new Array();
for (var index in arr) {
temp_array.push(arr[index]);
}
// 用于保存最终取出的数值项
var return_array = new Array();
for (var i = 0; i<num; i++) {
// 检查临时数组是否还有剩余元素,防止下标越界
if (temp_array.length>0) {
// 生成一个介于 0 到临时数组长度的随机索引
var arrIndex = Math.floor(Math.random()*temp_array.length);
// 将该随机索引对应的元素值复制到结果数组中
return_array[i] = temp_array[arrIndex];
// 从临时数组中删除已选元素,使临时数组变为新的剩余数组
temp_array.splice(arrIndex, 1);
} else {
// 若临时数组数据取完但仍需继续抽取(如要求20项但仅10项),则退出循环
break;
}
}
return return_array;
}
// 测试用例:定义包含1至33的数组,随机抽取6个元素并弹窗显示
var ArrList=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33];
alert(getArrayItems(ArrList,6));
</script>