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 相关文章推荐
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 Javascript
比较简单实用的使用正则三种版本的js去空格处理方法
Nov 18 Javascript
Javascript事件热键兼容ie|firefox
Dec 30 Javascript
再谈javascript面向对象编程
Mar 18 Javascript
js正则表达式匹配数字字母下划线等
Apr 14 Javascript
深入了解JavaScript中的Symbol的使用方法
Jul 28 Javascript
jQuery简单实现上下,左右滑动的方法
Jun 01 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
vue组件实例解析
Jan 10 Javascript
canvas绘制多边形
Feb 24 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
Jul 21 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 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获取文件夹大小函数用法实例
2015/07/01 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
javascript parseInt 函数分析(转)
2009/03/21 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
使用Python绘制图表大全总结
2017/02/11 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python递归函数实例讲解
2019/02/27 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Python切图九宫格的实现方法
2019/10/10 Python
python标识符命名规范原理解析
2020/01/10 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
华三通信H3C面试题
2015/05/15 面试题
毕业生自我鉴定
2013/11/05 职场文书
城管年度个人总结
2015/02/28 职场文书
刑事附带民事代理词
2015/05/25 职场文书
校运会广播稿
2015/08/19 职场文书
Python3接口性能测试实例代码
2021/06/20 Python
php将xml转化对象的实例详解
2021/11/17 PHP