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 相关文章推荐
javascipt基础内容--需要注意的细节
Apr 10 Javascript
JS和Jquery获取和修改label的值的示例代码
Jan 15 Javascript
引用其它js时如何同时处理多个window.onload事件
Sep 02 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
Bootstrap 模态框实例插件案例分析
Dec 28 Javascript
Vue.js实现模拟微信朋友圈开发demo
Apr 20 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
Oct 12 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
Dec 09 Javascript
使用 Element UI Table 的 slot-scope方法
Oct 10 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
Jul 16 Javascript
js实现验证码功能
Jul 24 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 csv操作类代码
2009/12/14 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
script标签属性用type还是language
2015/01/21 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
微信小程序实现轮播图效果
2017/09/07 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
Sanic框架流式传输操作示例
2018/07/18 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
WSDL的操作类型主要有几种
2013/07/19 面试题
班风学风建设方案
2014/05/06 职场文书
学校安全管理责任书
2014/07/23 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
导游词之江西赣州
2019/10/15 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL