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 相关文章推荐
关于 byval 与 byref 的区别分析总结
Oct 08 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
windows8.1+iis8.5下安装node.js开发环境
Dec 12 Javascript
AngularJS 指令的交互详解及实例代码
Sep 14 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
巧用canvas
Jan 21 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
Angular实现的table表格排序功能完整示例
Dec 22 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
Jul 09 Javascript
vuejs实现折叠面板展开收缩动画效果
Sep 06 Javascript
Node.js API详解之 os模块用法实例分析
May 06 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格式化工具Beautify PHP小小BUG
2008/04/24 PHP
需要发散思维学习PHP
2009/06/29 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
javascript 打印页面代码
2009/03/24 Javascript
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
webpack下实现动态引入文件方法
2018/02/22 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
Python变量和数据类型详解
2017/02/15 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python中字符串与编码示例代码
2019/05/20 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
python 爬取小说并下载的示例
2020/12/07 Python
python如何调用php文件中的函数详解
2020/12/29 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
初中物理教学反思
2014/01/14 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
走群众路线剖析材料
2014/10/09 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
中学生自我评价2015
2015/03/03 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP