Javascript从数组中随机取出不同元素的两种方法


Posted in Javascript onSeptember 22, 2016

一、常规算法

第一种方法较常规,经测试有bug,数据量大以后随机几次返回的对象直接是function而不是object。 当然简单数据类型应该没有这个问题。

示例代码

/**
     从数组中随机抽取数据 2016-09-09
   **/
   function getArrItem(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.splice(arrIndex, 1);
       } else {
         break;
       }
     }
     return return_array;
   }

二、洗牌算法

第二种是使用洗牌算法,亲测有效。

示例代码

/**
      随机化原数组
    **/
    function shuffle(array) {
      var m = array.length,
        t, i;
      // 如果还剩有元素…
      while (m) {
        // 随机选取一个元素…
        i = Math.floor(Math.random() * m--);
        // 与当前元素进行交换
        t = array[m];
        array[m] = array[i];
        array[i] = t;
      }
      return array;
    }
 
//用法
var message = shuffle(totalArr);
message = message.slice(0, 3);

以上就是为大家总结的两种Javascript从数组中随机取出不同元素的方法,希望这篇文章能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
js脚本学习 比较实用的基础
Sep 07 Javascript
JavaScipt基本教程之前言
Jan 16 Javascript
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
JavaScript CSS修改学习第二章 样式
Feb 19 Javascript
jquery蒙版控件实现代码
Dec 08 Javascript
javascript学习(二)javascript常见问题总结
Jan 02 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
VUE实现表单元素双向绑定(总结)
Aug 08 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
Jul 04 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 Javascript
JavaScript面试题大全(推荐)
Sep 22 #Javascript
JavaScript 是什么意思
Sep 22 #Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 #Javascript
JavaScript与java语言有什么不同
Sep 22 #Javascript
JavaScript中数组slice和splice的对比小结
Sep 22 #Javascript
深入理解JavaScript中的并行处理
Sep 22 #Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 #Javascript
You might like
用定制的PHP应用程序来获取Web服务器的状态信息
2006/10/09 PHP
php重定向的三种方法分享
2012/02/22 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
机电一体化自荐信
2013/12/10 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
工程质检员岗位职责
2015/04/08 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
初一英语教学反思
2016/02/15 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技