JS 在指定数组中随机取出N个不重复的数据


Posted in Javascript onJune 10, 2014
<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 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>
Javascript 相关文章推荐
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
jQuery实现鼠标划过修改样式的方法
Apr 14 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
js实现新年倒计时效果
Dec 10 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
vue中node_modules中第三方模块的修改使用详解
May 31 Javascript
vue之组件内监控$store中定义变量的变化详解
Nov 08 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
Nov 16 Javascript
JS生成随机字符串的多种方法
Jun 10 #Javascript
json中换行符的处理方法示例介绍
Jun 10 #Javascript
Jquery焦点与失去焦点示例应用
Jun 10 #Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 #Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
Jun 10 #Javascript
iframe里的页面禁止右键事件的方法
Jun 10 #Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 #Javascript
You might like
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
探讨php中header的用法详解
2013/06/07 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php文件包含的几种方式总结
2019/09/19 PHP
索趣科技的答案
2007/02/07 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
python实现多线程抓取知乎用户
2016/12/12 Python
python 中random模块的常用方法总结
2017/07/08 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
护理专科自荐书范文
2014/02/18 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android