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 相关文章推荐
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
用原生js做个简单的滑动效果的回到顶部
Oct 15 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
Oct 26 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
基于javascript实现tab切换特效
Mar 29 Javascript
Javascript中apply、call、bind的巧妙使用
Aug 18 Javascript
JavaScript SHA1加密算法实现详细代码
Oct 06 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
p5.js 毕达哥拉斯树的实现代码
Mar 23 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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
收集的DedeCMS一些使用经验
2007/03/17 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
Javascript面向对象编程
2012/03/18 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
详解Django通用视图中的函数包装
2015/07/21 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
董事长岗位职责
2013/11/30 职场文书
应届生求职自荐信
2014/07/04 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
水电工岗位职责
2015/02/14 职场文书
毕业实习单位意见
2015/06/04 职场文书
十八大观后感
2015/06/12 职场文书
表彰大会新闻稿
2015/07/17 职场文书
离婚协议书范文2016
2016/03/18 职场文书