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的public、private和privileged模式
Dec 28 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
Jun 14 Javascript
Array栈方法和队列方法的特点说明
Jan 24 Javascript
jquery处理json对象
Nov 03 Javascript
新入门node.js必须要知道的概念(必看篇)
Aug 10 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
原生js检测页面加载完毕的实例
Sep 11 Javascript
vue使用keep-alive保持滚动条位置的实现方法
Apr 09 Javascript
JS浏览器BOM常见操作实例详解
Apr 27 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语法(2)
2006/10/09 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
Python实现字典的key和values的交换
2015/08/04 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python中os.remove()用法及注意事项
2021/01/31 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
Linux机考试题
2015/10/16 面试题
mysql有关权限的表都有哪几个
2015/04/22 面试题
财务管理专业毕业生求职信范文
2013/09/21 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
追悼会子女答谢词
2014/01/28 职场文书
推荐信格式要求
2014/05/09 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书