js取得数组任意个不重复的随机数组元素
2010-06-19 14:54
330 查看
<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变为新的数组
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>
//从一个给定的数组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变为新的数组
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>
相关文章推荐
- js获取数组任意个不重复的随机数组元素 原创
- [置顶] 用js 删除一组数组中第五大的数,删除之后的数组次序保持不变,若第五大数重复删除任意一个即可。
- js取得数组重复元素
- Vue.js在数组中插入重复数据的实现代码
- js 数组去重复的四种方法
- JS判断一个数组中是否有重复值的三种方法来自
- 取值为[1,n-1] 含n 个元素的整数数组至少存在一个重复数,O(n) 时间内找出其中任意一个重复数
- JS判断一个数组中是否有重复值的三种方法
- js数组去掉重复的元素
- JS实现的数组去除重复数据算法小结
- 高效率去掉js数组中重复项
- js判断数组是否有重复值
- js过滤数组重复元素的简单方法
- JS求多个数组的重复数据
- js判断一个数组是否重复
- js去除数组中重复的元素
- js 取得数组中的最大值和最小值(含多维数组)
- 高效的去掉js数组或者字符串中重复的对象方法
- 返回数组中任意某个重复的数字--时间复杂度O(n)空间复杂度O(1)