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 相关文章推荐
JS清空多文本框、文本域示例代码
Feb 24 Javascript
jquery 表格排序、实时搜索表格内容(附图)
May 19 Javascript
浅谈JavaScript function函数种类
Dec 29 Javascript
程序员必知35个jQuery 代码片段
Nov 05 Javascript
jQuery.cookie.js使用方法及相关参数解释
Mar 06 Javascript
vue基于Vue2.0和高德地图的地图组件实例
Apr 28 Javascript
require.js中的define函数详解
Jul 10 Javascript
Vue resource中的GET与POST请求的实例代码
Jul 21 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
微信小程序自定义toast弹窗效果的实现代码
Nov 15 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自定义函数收代码
2010/08/01 PHP
3种php生成唯一id的方法
2015/11/23 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
python列表去重的二种方法
2014/02/14 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
python 画条形图(柱状图)实例
2020/04/24 Python
Python几种常见算法汇总
2020/06/02 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
关于工资低的辞职信
2014/01/14 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
会计主管岗位职责
2015/04/02 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
详解nginx进程锁的实现
2021/06/14 Servers
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android