JavaScript 实现从数组中随机获取指定数量不重复元素
作者:异步漫步时间:2026-10-24 17:09:50浏览:461
本文介绍一种使用 JavaScript 从给定数组中随机选取指定数量不重复元素的方法。核心思路是创建副本数组,通过 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) {
// 在临时数组当前长度范围内生成一个随机索引
var arrIndex = Math.floor(Math.random()*temp_array.length);
// 根据随机索引获取对应的元素值,存入结果数组
return_array[i] = temp_array[arrIndex];
// 从临时数组中删除已选取的元素,使临时数组缩短,保证下次不重复
temp_array.splice(arrIndex, 1);
} else {
//数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
break;
}
}
return return_array;
}
// 以下为测试代码示例
var my_array = new Array();
for (i = 0; i < 20; i++)
{
my_array[i] = "Num:"+i;
}
my_array = getArrayItems(my_array,5);
for (i = 0; i < my_array.length; i++)
{
alert(my_array[i]);
}
</script>作者最新文章
D3.js 比例尺与坐标轴的配置详解
2026-11-05 16:54:46
JavaScript怎么遍历对象的Symbol键和不可枚举属性
2026-11-05 13:13:39
封装一个健壮的JS字符串判空工具函数
2026-11-05 12:16:14
JavaScript合并数组的三种常用方法:concat、扩展运算符与push
2026-11-05 11:22:29
JavaScript立即执行函数(IIFE)是什么及基本语法
2026-11-05 10:51:19
