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 相关文章推荐
JavaScript事件列表解说
Dec 22 Javascript
JQuery this 和 $(this) 的区别
Aug 23 Javascript
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
Js实现简单的小球运动特效
Feb 18 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
Aug 29 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
使用vue的transition完成滑动过渡的示例代码
Jun 25 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
Jun 03 Javascript
JavaScript 作用域实例分析
Oct 02 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分页显示制作详细讲解
2008/11/19 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
JS中如何设置readOnly的值
2013/12/25 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
详解JavaScript的BUG和错误
2018/05/07 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
用Python实现协同过滤的教程
2015/04/08 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
酒吧员工的岗位职责
2013/11/26 职场文书
分公司任命书
2014/06/06 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server