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 相关文章推荐
Javascript继承机制的设计思想分享
Aug 28 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
jQuery的ajax和遍历数组json实例代码
Aug 01 Javascript
原生js实现淘宝购物车功能
Jun 23 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
JS实现的简单折叠展开动画效果示例
Apr 28 Javascript
React中使用UEditor百度富文本的方法
Aug 22 Javascript
vue使用axios上传文件(FormData)的方法
Apr 14 Javascript
VUE兄弟组件传值操作实例分析
Oct 26 Javascript
vuex(vue状态管理)的特殊应用案例分享
Mar 03 Javascript
JS+css3实现幻灯片轮播图
Aug 14 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
Python中的Matplotlib模块入门教程
2015/04/15 Python
Python中的条件判断语句基础学习教程
2016/02/07 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
python调用webservice接口的实现
2019/07/12 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
安全资金保障制度
2014/01/23 职场文书
元旦晚会主持词
2014/03/24 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
交通事故委托书范本
2014/09/28 职场文书
公司回复函格式
2015/07/14 职场文书
python中如何对多变量连续赋值
2021/06/03 Python