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 注册事件代码
Jan 27 Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
基于js实现投票的实例代码
Aug 04 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
Nov 25 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
收藏AngularJS中最重要的核心功能
Jul 09 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
Sep 15 Javascript
react实现同页面三级跳转路由布局
Sep 26 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
C# Assembly类访问程序集信息
2009/06/13 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
PDO实现学生管理系统
2020/03/21 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
Python paramiko模块的使用示例
2018/04/11 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
详解python做UI界面的方法
2019/02/27 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
Python类class参数self原理解析
2020/11/19 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
JAVA和C++区别都有哪些
2015/03/30 面试题
Linux的文件类型
2012/03/07 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
老公给老婆的道歉信
2014/01/10 职场文书
综合素质评价自我评价
2015/03/06 职场文书
英雄儿女观后感
2015/06/09 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python