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入门教程(6) Window窗口对象
Jan 31 Javascript
js中Math之random,round,ceil,floor的用法总结
Dec 26 Javascript
js中用window.open()打开多个窗口的name问题
Mar 13 Javascript
使用javascript实现Iframe自适应高度
Dec 24 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
js添加事件的通用方法推荐
May 15 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
Jun 22 Javascript
require简单实现单页应用程序(SPA)
Jul 12 Javascript
Vue.js教程之计算属性
Nov 11 Javascript
Webpack path与publicPath的区别详解
May 03 Javascript
vue 组件开发原理与实现方法详解
Nov 29 Javascript
JS的深浅复制详细
Oct 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记录代码执行时间(实现代码)
2013/07/05 PHP
微信支付开发维权通知实例
2016/07/12 PHP
微信支付的开发流程详解
2016/09/13 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
JS实现拖拽的方法分析
2016/12/20 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python任务调度实例分析
2015/05/19 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python实现石头剪刀布程序
2021/01/20 Python
python使用正则筛选信用卡
2019/01/27 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
记者岗位职责
2014/01/06 职场文书
基层工作经历证明
2014/01/13 职场文书
教师自我鉴定范文
2014/03/20 职场文书
个人整改措施书面材料
2014/10/24 职场文书
功夫熊猫观后感
2015/06/10 职场文书
Python中常见的导入方式总结
2021/05/06 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python